我收到了这个错误:
java.nio.charset.UnsupportedCharsetException: utf8mb4
我还没有找到任何解决方案。
This说没有必要解决这个问题,只要我不能改变服务器端。
我怎么处理这个字符集?
尝试更新您的数据库或运行:
ALTER DATABASE yourdatabasename CHARACTER SET utf8 COLLATE utf8_unicode_ci
如果您无法在后端服务上进行任何更改,请尝试更改您的请求中的字符集配置,如下所示:
How to suppress Charset being automatically added to Content-Type in okhttp
这是我的解决方案,
这会将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。然后,尝试它而不转换身体。它会工作。