我正在尝试使用以下方法在java中编码字符串,
compile project(':ReactNativeLocalization')`
当我在eclipse中运行此代码时,我得到的值为/ v9bUA ==
但是一些在线UTF 16转换器提供的值如 4E02
任何人都知道如何转换UTF 16中的中文字符。
我已经完成了大部分的stackoverflow问题仍然没有答案。
提前致谢!
答案 0 :(得分:1)
这很好用。
您只需要将字节码转换为十六进制表示,
String encodeAsUcs2(String messageContent) throws UnsupportedEncodingException {
byte[] bytes = messageContent.getBytes("UTF-16BE");
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X", b));
}
return sb.toString();
}
答案 1 :(得分:1)
代码
String s = "子";
byte[] utf16encodedBytes = s.getBytes("UTF-16")
将为您提供编码为uft16字节的字符串。
我认为你在这里感到困惑的是你正在编码到Base64,它以ASCII格式提供这些字节 / v9bUA == 。数字 4E02 是十六进制编码。要查看示例的十六进制编码,您可以尝试:
String hexEncodedString = DatatypeConverter.printHexBinary(utf16encodedBytes);