Ответ Android: java.nio.charset.UnsupportedCharsetException: utf8mb4 - PullRequest
0 голосов
/ 13 февраля 2019

Я получил эту ошибку:

java.nio.charset.UnsupportedCharsetException: utf8mb4

И я еще не нашел никаких решений.

Это говорит, что нет смысла решать эту проблему,пока я не могу изменить серверную сторону.

Как я могу обработать эту кодировку?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Вот Мое решение,

Это декодирует response.body () в UTF-8:

String responseResult = null;
try {
    Log.d(TAG, response.body().contentType()+"");
    BufferedSource source = response.body().source();
    source.request(Long.MAX_VALUE); // Buffer the entire body.
    Buffer buffer = source.buffer();
    responseResult = buffer.clone().readString(Charset.forName("UTF-8"));
    Log.d(TAG, "result: "+responseResult);
}catch(Exception e){
    // TODO
}

Однако большая проблема заключалась в том, что URL был неверным.Если это неправильный URL, вы можете получить эту ошибку.

Например,

URL должен быть example.com/feed/4, но вы отправляете запрос на example.com/feed.

ВВ моем случае после расшифровки тела я получил 404 ERROR.А потом понял, что URL был неправильным.Итак, я исправил, и он работал нормально!

Декодер может не преобразовываться должным образом, например, эмодзи.Затем попробуйте это без преобразования тела.Это будет работать.

0 голосов
/ 13 февраля 2019

Попробуйте обновить базу данных или запустите:

ALTER DATABASE yourdatabasename CHARACTER SET utf8 COLLATE utf8_unicode_ci

Если вы не можете ничего изменить в своей бэкэнд-службе, попробуйте изменить конфигурацию набора символов по вашему запросу, как здесь:

Как отключить автоматическое добавление Charset к Content-Type в okhttp

...