2016-07-28 7 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. В UTF-16, который закодирован как 4E 09, который соответствует началу вывода вашего кода. В UTF-8 он кодируется как E4 B8 89, который соответствует вашему выходу Java.

Если вы хотите UTF-16, просто используйте StandardCharsets.UTF_16BE вместо StandardCharsets.UTF_8. (Но только сделайте это, если вы действительно хотите UTF-16. UTF-8 - лучшее кодирование для использования в большинстве случаев, IMO.)