Преобразование кодировки символов в Groovy От UTF-8 до EUC-JP

Вопрос: Мы требуем преобразования кодировки символов для одного из наших сервисов, наше требование состоит в том, чтобы извлекать символы в кодированном формате UTF-8 и затем конвертировать в EUC-JP, а затем готовить некоторые хэширования (на основе Groovy) jdk8. В php аналогичное решение отлично подходит для нас и кодируется как, $encodedToEucJp = mb_convert_encoding($inputStringWithUtf8, "EUC-JP"); Print_r(md5($encodedToEucJp)); Мы решили

Вопрос:

Мы требуем преобразования кодировки символов для одного из наших сервисов, наше требование состоит в том, чтобы извлекать символы в кодированном формате UTF-8 и затем конвертировать в EUC-JP, а затем готовить некоторые хэширования (на основе Groovy) jdk8.

В php аналогичное решение отлично подходит для нас и кодируется как,

$encodedToEucJp = mb_convert_encoding($inputStringWithUtf8, «EUC-JP»); Print_r(md5($encodedToEucJp));

Мы решили много способов решения, например,

Java.security.MessageDigest.getInstance(‘MD5) .digest(New String(inputStringWithUtf8.getBytes(«UTF-8»), «EUC-JP») .getBytes(«EUC-JP»)) .encodeHex() .toString();

Но это решение не сработало для некоторых символов, которые создают другой дайджест, а затем из нашего php-кодированного решения. Здесь упоминается несколько персонажей -, ĭ,? и т.д. Именно поэтому мы не смогли обработать тот же дайджест с одинаковым входом как в php, так и в java-системе.

Заранее спасибо.

Ответ №1

Ошибка в этой части кода:

New String(inputStringWithUtf8.getBytes(«UTF-8»), «EUC-JP»)

В основном, вы пытаетесь интерпретировать массив байтов UTF-8, как если бы он был закодирован в EUC-JP, что не имеет смысла.

Следующий код должен выполнять работу

Java.security.MessageDigest.getInstance(‘MD5) .digest(inputStringWithUtf8.getBytes(«EUC-JP»)) .encodeHex() .toString();

Оцените статью
Добавить комментарий