我收到此错误:
java.nio.charset.UnsupportedCharsetException: utf8mb4
我还没有找到任何解决方案。
This说,只要我不能更改服务器端,就没有解决这个问题的必要。
如何处理此字符集?
答案 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错误。因此,我修复并正常运行!
解码可能无法正确转换,例如表情符号。然后,尝试它而不转换身体。它将起作用。