将日语字符转换为十六进制不起作用

converting Japanese characters to hex not working

我的代码很简单(使用commons-codec-1.10.jar)

System.out.println(Hex.encodeHex("三菱グループ".getBytes(StandardCharsets.UTF_8), true));

它在我的 PC 中生成 e4b889e88fb1e382b0e383abe383bce38397,但根据 http://codebeautify.org/string-hex-converter,它应该是 4e0983f130b030eb30fc30d7。我错过了什么吗?

Hex.encodeHex 工作正常,但结果是 UTF-8 编码,而 codebeautify.org 似乎使用的是 UTF-16。

让我们从三开始。那是 U+4E09。在编码为 4E 09 的 UTF-16 中,它与 codebeautify 输出的开头相匹配。在 UTF-8 中,它被编码为 E4 B8 89,与您的 Java 输出匹配。

如果您想要 UTF-16,只需使用 StandardCharsets.UTF_16BE 而不是 StandardCharsets.UTF_8。 (但只有当你真的想要 UTF-16 时才这样做。在大多数情况下,UTF-8 是一种更好的编码,IMO。)