【发布时间】:2017-07-06 20:04:33
【问题描述】:
我从API 响应中得到String,我必须在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()));
现在ü 字符已正确显示。
非常感谢所有 cmets,它让我朝着正确的方向研究。
【问题讨论】:
-
我们不知道您是如何从服务器获取数据的——这是重要的部分之一。请提供更多背景信息。
-
I get a String from an API response这就是问题所在。 API 很可能使用默认的 Windows 编码:CP1252。相反,您需要将值正确返回为 UTF-8。 -
如果 HTTP 标头中没有信息,您是否尝试过chardet?
-
感谢你们的 cmets 帮助我寻找正确的方向并找到问题。
标签: java android string character-encoding encode