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);
我正在尝试使用以下方法对 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);