【问题标题】:Java String not displaying German umlauts charactersJava字符串不显示德语变音符号
【发布时间】:2017-07-06 20:04:33
【问题描述】:

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

应该是“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()));

现在ü 字符已正确显示。

非常感谢所有 cmets,它让我朝着正确的方向研究。

【问题讨论】:

  • 我们不知道您是如何从服务器获取数据的——这是重要的部分之一。请提供更多背景信息。
  • I get a String from an API response 这就是问题所在。 API 很可能使用默认的 Windows 编码:CP1252。相反,您需要将值正确返回为 UTF-8。
  • 如果 HTTP 标头中没有信息,您是否尝试过chardet
  • 感谢你们的 cmets 帮助我寻找正确的方向并找到问题。

标签: java android string character-encoding encode


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2013-12-12
    • 1970-01-01
    • 2016-01-21
    • 2013-02-09
    相关资源
    最近更新 更多