将日语字符转换为十六进制不起作用
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。)
我的代码很简单(使用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。)