Java 字符串无法显示德语umlauts字符

3

我从一个 API 响应中获取一个 String,我必须在一个 TextView 中显示它。这个 String 的样子是这样的:

enter image description here

应该是“Bürling”,但德语字符ü未被表示。

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

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

我还阅读了这篇优秀的文章:

每个程序员绝对必须知道的关于编码和字符集的内容以处理文本

这里是我尝试过的一些链接:

如何在Java中在ISO-8859-1和UTF-8之间进行转换?

Java将Windows-1252转换为UTF-8,某些字母是错误的

将字符串编码为UTF-8

有人有想法吗?
谢谢。

编辑:

我找到了原因。解析API响应时,我只是添加了这个:

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

之前是这样的:

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

现在ü字符已经正确显示。
非常感谢所有的评论,这让我朝着正确的方向进行了研究。

3
我们不知道你是如何从服务器获取数据的——这是其中一个重要的部分。请提供更多上下文。 - Jon Skeet
1
我从API响应中获取了一个字符串。问题就在这里。该API很可能使用默认的Windows编码:CP1252。相反,您需要将值正确返回为UTF-8。 - Phantômaxx
1
如果HTTP头中没有信息,你尝试使用chardet了吗? - pskink
1
谢谢大家的评论,帮助我朝着正确的方向寻找问题。 - Ale
https://dev59.com/RVwY5IYBdhLWcg3wYW1X#32709513 - PEHLAJ
如果您正在使用MySQL,请参见https://dev59.com/WFoT5IYBdhLWcg3wnQn9中的“黑色钻石”。 - Rick James
1个回答

2

我认为在你确切知道服务器使用的字符集之前,盲目尝试转换成随机字符集是无济于事的。

你应该从Content-type响应头中推断API发送的字符集。或者在请求中要求一个字符集。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接