在Android中,连字符被奇怪的角色取代

时间:2015-03-03 21:11:56

标签: java android

我有一些来自HttpPost的XML数据,类似于:

<Item>
  <Id>19695</Id>
  <Name>This is my content – it is great!</Name>
</Item>

当我只是System.out.println检索到的数据时,它打印出来:

<Item>
  <Id>19695</Id>
  <Name>This is my content â it is great!</Name>
</Item>

因此,当我在浏览器中检查XML时,连字符“ - ”显示正常,但是当我在执行HttpPost后打印它时,它将替换为“â”

我认为它与此代码有关:

BufferedReader reader = new BufferedReader(new InputStreamReader(
                isr, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
    sb.append(line + "\n");
}
isr.close();

result = sb.toString();

我该怎样防止这种情况?谢谢!

编辑:撇号(')

也是如此

3 个答案:

答案 0 :(得分:2)

将charset设置为UTF-8。您的读者必须使用UTF-8

进行设置

答案 1 :(得分:1)

这似乎是一个编码问题。您尝试将其读作iso-8859-1。您的服务器是否使用其他编码(例如utf-8)?

答案 2 :(得分:0)

这很可能是因为您没有使用正确的连字符(可能是由于奇怪的键盘布局)。 Android支持字符串中的HTML标记,因此您可以尝试使用&#45;代替连字符。

编辑:

这里是撇号的HTML标记:&#39;