我从String
响应中获得API
,我必须在TextView
中显示。 String
看起来像这样:
它应该是“Bürling”但德语字符ü
没有被代表。
问题在于我不知道这个String
是如何在服务器上编码的。
我尝试将所有可能的组合转换为UTF-8
,windows-1252
和ISO-8859-1
,但没有成功。
我也读过这篇很棒的文章:
这里有一些我试过的链接:
How do I convert between ISO-8859-1 and UTF-8 in Java?
Java convert Windows-1252 to UTF-8, some letters are wrong
有没有人有想法?
感谢。
修改
我找到了原因。解析API的响应,我刚刚添加了这个:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), Charset.forName("ISO-8859-15")));
在此之前:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
现在正确显示ü
字符。
非常感谢所有评论,这让我在正确的方向上进行了研究。
答案 0 :(得分:2)
我认为在你真正知道服务器正在使用哪个字符集之前,盲目地尝试转换为随机字符集对你没有任何好处。
您应该从内容类型响应标头中推断出API发送的字符集。或者甚至在请求中要求一个。