Android中文和Unicode互轉(zhuǎn)工具類

Kotlin

package com.zcs.app.demo

fun main() {
    val src = "你好 世界?Hello World,Kotlin > Java"
    val unicode = UnicodeUtils.decode(src)
    val str = UnicodeUtils.encode(unicode)
    println("Unicode is --> $unicode")
    println("Chinese is --> $str")
}

/**
 * @author ZengCS
 * @deprecated Kotlin處理中文和Unicode互轉(zhuǎn)工具類
 */
object UnicodeUtils {
    /**
     * 將字符串轉(zhuǎn)成Unicode編碼,包括但不限于中文
     *
     * @param src 原始字符串,包括但不限于中文
     * @return Unicode編碼字符串
     */
    fun decode(src: String): String {
        val builder = StringBuilder()
        for (element in src) {
            // 如果你的Kotlin版本低于1.5,這里 element.code 會報錯 找不到方法,請?zhí)鎿Q成:
            // Kotlin < 1.5
            // var s = Integer.toHexString(element.toInt())
            // Kotlin >= 1.5
            var s = Integer.toHexString(element.code)

            if (s.length == 2) {// 英文轉(zhuǎn)16進制后只有兩位,補全4位
                s = "00$s"
            }
            builder.append("\\u$s")
        }
        return builder.toString()
    }

    /**
     * 解碼Unicode字符串,得到原始字符串
     *
     * @param unicode Unicode字符串
     * @return 解碼后的原始字符串
     */
    fun encode(unicode: String): String {
        val builder = StringBuilder()
        val hex = unicode.split("\\\\u".toRegex()).toTypedArray()
        for (i in 1 until hex.size) {
            val data = hex[i].toInt(16)
            builder.append(data.toChar())
        }
        return builder.toString()
    }
}

Java

package com.zcs.app.demo;

/**
 * @author ZengCS
 * @deprecated Java處理中文和Unicode互轉(zhuǎn)工具類
 */
public class JUnicodeUtils {
    public static void main(String[] args) {
        String src = "你好 世界?Hello World,I am Java";
        String unicode = decode(src);
        String str = encode(unicode);
        System.out.println("Unicode is --> " + unicode);
        System.out.println("Chinese is --> " + str);
    }

    /**
     * 將字符串轉(zhuǎn)成Unicode編碼,包括但不限于中文
     *
     * @param src 原始字符串,包括但不限于中文
     * @return Unicode編碼字符串
     */
    public static String decode(String src) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < src.length(); i++) {
            char c = src.charAt(i);
            String s = Integer.toHexString(c);
            if (s.length() == 2) {
                s = "00" + s;
            }
            builder.append("\\u").append(s);
        }
        return builder.toString();
    }

    /**
     * 解碼Unicode字符串,得到原始字符串
     *
     * @param unicode Unicode字符串
     * @return 解碼后的原始字符串
     */
    public static String encode(String unicode) {
        StringBuilder builder = new StringBuilder();
        String[] hex = unicode.split("\\\\u");
        for (int i = 1; i < hex.length; i++) {
            int data = Integer.parseInt(hex[i], 16);
            builder.append((char) data);
        }
        return builder.toString();
    }
}

轉(zhuǎn)換后,可以通過這個工具網(wǎng)站進行驗證:https://www.bejson.com/convert/unicode_chinese/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容