2016-07-28 48 views
0

我的代碼很簡單(使用公地編解碼器1.10.jar)轉換日文字符爲十六進制不工作

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

它產生在我的電腦e4b889e88fb1e382b0e383abe383bce38397,但在accoridng到http://codebeautify.org/string-hex-converter,它應該是4e0983f130b030eb30fc30d7。我錯過了什麼?

+0

您確定您發佈的網站正確地使用了它並且使用了相同的編碼? – Thomas

回答

2

Hex.encodeHex工作正常,但結果是UTF-8編碼,而codebeautify.org似乎使用UTF-16。

讓我們以三開始。那是U + 4E09。在編碼爲4E 09的UTF-16中,它與您的代碼美化輸出的開始位置相匹配。 UTF-8編碼爲E4 B8 89,與您的Java輸出相匹配。

如果你想要UTF-16,只需使用StandardCharsets.UTF_16BE而不是StandardCharsets.UTF_8。 (但只有在真的是想要UTF-16時纔會這樣做,UTF-8在大多數情況下都是更好的編碼,IMO)

相關問題