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

Android Response: java.nio.charset.UnsupportedCharsetException: utf8mb4

我收到这个错误:

java.nio.charset.UnsupportedCharsetException: utf8mb4

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

This说解决这个问题没有意义,只要,我换不了服务器端就可以了

我该如何处理这个字符集?

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

ALTER DATABASE yourdatabasename CHARACTER SET utf8 COLLATE utf8_unicode_ci

如果您无法对后端服务进行任何更改,请尝试根据您的要求更改字符集配置,如下所示:

这是我的解决方案,

这会将 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

在我的例子中,在解码 body 之后,我得到了 404 ERROR。然后,意识到 URL 是错误的。所以,我修复了它并且工作正常!

解码可能无法正确转换,例如,表情符号。然后,在不转换 body 的情况下进行尝试。它会起作用。