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

问题描述 投票:0回答:2

我收到了这个错误:

java.nio.charset.UnsupportedCharsetException: utf8mb4

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

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

我怎么处理这个字符集?

java android encoding decoding
2个回答
0
投票

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

ALTER DATABASE yourdatabasename CHARACTER SET utf8 COLLATE utf8_unicode_ci

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

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


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,您可能会收到此错误。

例如,

URL必须是example.com/feed/4,但您将请求发送到example.com/feed

在我的情况下,解码后的身体,我得到了404 ERROR。然后,意识到URL错了。所以,我修好了,工作得很好!

解码可能无法正确转换,例如,emojis。然后,尝试它而不转换身体。它会工作。

© www.soinside.com 2019 - 2024. All rights reserved.