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互转工具类
*/
object UnicodeUtils {
/**
* 将字符串转成Unicode编码,包括但不限于中文
*
* @param src 原始字符串,包括但不限于中文
* @return Unicode编码字符串
*/
fun decode(src: String): String {
val builder = StringBuilder()
for (element in src) {
// 如果你的Kotlin版本低于1.5,这里 element.code 会报错 找不到方法,请替换成:
// Kotlin < 1.5
// var s = Integer.toHexString(element.toInt())
// Kotlin >= 1.5
var s = Integer.toHexString(element.code)
if (s.length == 2) {// 英文转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互转工具类
*/
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);
}
/**
* 将字符串转成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();
}
}
转换后,可以通过这个工具网站进行验证:https://www.bejson.com/convert/unicode_chinese/
网友评论