我的代码非常简单(使用Common-codec-1.10.jar)
System.out.println(Hex.encodeHex("三菱グループ".getBytes(StandardCharsets.UTF_8), true));它在我的PC机上产生e4b889e88fb1e382b0e383abe383bce38397,但根据http://codebeautify.org/string-hex-converter,它应该是4e0983f130b030eb30fc30d7。我有遗漏什么吗?
发布于 2016-07-28 11:17:56
Hex.encodeHex工作正常,但结果是UTF-8编码,而codebeautify.org似乎使用UTF-16。
让我们从三开始。那是U+4E09。在UTF-16中,编码为4e09,这与代码美化输出的开始相匹配。在UTF-8中,它被编码为E4 B8 89,这与您的B8输出相匹配。
如果您想要UTF-16,只需使用StandardCharsets.UTF_16BE而不是StandardCharsets.UTF_8。(但只有当你真的想要UTF-16的时候才这么做。在大多数情况下,UTF-8是一种更好的编码方式。
https://stackoverflow.com/questions/38634783
复制相似问题