中文字符UTF-16 Java编码字符串

时间:2017-07-24 02:38:56

标签: java encoding utf-8 utf-16 utf

我正在尝试使用以下方法在java中编码字符串,

compile project(':ReactNativeLocalization')` 

当我在eclipse中运行此代码时,我得到的值为/ v9bUA ==

但是一些在线UTF 16转换器提供的值如 4E02

任何人都知道如何转换UTF 16中的中文字符。

我已经完成了大部分的stackoverflow问题仍然没有答案。

提前致谢!

2 个答案:

答案 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);