Java字符串不显示德语变音符号字符

时间:2017-02-17 10:28:34

标签: java android string character-encoding encode

我从String响应中获得API,我必须在TextView中显示。 String看起来像这样:

enter image description here

它应该是“Bürling”但德语字符ü没有被代表。

问题在于我不知道这个String是如何在服务器上编码的。

我尝试将所有可能的组合转换为UTF-8windows-1252ISO-8859-1,但没有成功。

我也读过这篇很棒的文章:

What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text

这里有一些我试过的链接:

How do I convert between ISO-8859-1 and UTF-8 in Java?

Java convert Windows-1252 to UTF-8, some letters are wrong

Encode String to UTF-8

有没有人有想法?
感谢。

修改

我找到了原因。解析API的响应,我刚刚添加了这个:

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), Charset.forName("ISO-8859-15")));

在此之前:

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

现在正确显示ü字符。

非常感谢所有评论,这让我在正确的方向上进行了研究。

1 个答案:

答案 0 :(得分:2)

我认为在你真正知道服务器正在使用哪个字符集之前,盲目地尝试转换为随机字符集对你没有任何好处。

您应该从内容类型响应标头中推断出API发送的字符集。或者甚至在请求中要求一个。