Java中的汉字UTF-16编码字符串

Chinese character UTF-16 Encoding string in Java

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

String s = "子";
byte[]   bytesEncoded = Base64.encodeBase64(s.getBytes("UTF-16"));
String stringEncoded = new String(bytesEncoded);

当我在 eclipse 中 运行 这段代码时,我得到的值是 /v9bUA==

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

谁知道怎么把汉字转换成UTF 16

我已经解决了大部分 Whosebug 问题仍然没有答案。

提前致谢!

这很好用。

你只需要将字节码转换为十六进制表示,

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();
}

代码

String s = "子";
byte[] utf16encodedBytes = s.getBytes("UTF-16")

将为您提供编码为 uft16 字节的字符串。

我认为这里让您感到困惑的是,您随后编码为 Base64,它以 ASCII 格式给出这些字节 /v9bUA==。数字 4E02 是十六进制编码。要查看示例的十六进制编码,您可以尝试:

String hexEncodedString =  DatatypeConverter.printHexBinary(utf16encodedBytes);