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/