Android响应:java.nio.charset.UnsupportedCharsetException:utf8mb4

时间:2019-02-13 16:52:47

标签: java android encoding decoding

我收到此错误:

java.nio.charset.UnsupportedCharsetException: utf8mb4

我还没有找到任何解决方案。

This说,只要我不能更改服务器端,就没有解决这个问题的必要。

如何处理此字符集?

2 个答案:

答案 0 :(得分:0)

尝试更新您的数据库或运行:

ALTER DATABASE yourdatabasename CHARACTER SET utf8 COLLATE utf8_unicode_ci

如果您不能在后端服务上进行任何更改,请尝试按您的请求更改字符集配置,例如:

How to suppress Charset being automatically added to Content-Type in okhttp

答案 1 :(得分:0)

这是我的解决方案,

这会将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必须为example.com/feed/4,但是您将请求发送到example.com/feed

以我为例,在对正文进行解码之后,我得到了404 ERROR。然后,意识到URL错误。因此,我修复并正常运行!

解码可能无法正确转换,例如表情符号。然后,尝试它而不转换身体。它将起作用。