撇号转换为textview中的问号

时间:2014-12-14 15:34:23

标签: android special-characters apostrophe

我正在将一些外部XML解析为一个对象并在textview中显示它。

撇号/单引号正被转换为这些愚蠢的问号符号。

我发现没有任何工作 - 我尝试过使用replaceall并用\'转发它,它没有给我所需的结果。

我尝试使用以下方式设置textview:

tv.setText(Html.fromHtml(news_item.getTitle()));

它似乎不起作用,我找不到任何其他解决方案,你的想法赞赏。

3 个答案:

答案 0 :(得分:2)

试试这个:

tv.setText(news_item.getTitle().replaceAll("\u2019", "'"));

对于其他Unicode字符,请参阅此link

答案 1 :(得分:1)

发现它!

您正在寻找的标记称为RIGHT SINGLE QUOTATION MARK,其unicode代码为U + 2019。应通过以下方式替换此特定标记:

String.replace("’", "’");

正确显示。

如果这不起作用,您应该通过以下方式从该标记替换为撇号:

String.replace("’", "'");

或直接:

String.replace("’", "'");

确保显示实际显示它。


关闭右单引号与撇号之间的区别:

'vs'

答案 2 :(得分:0)

记录的解决方案将起作用,但我认为这不是解决此问题的正确方法。问题的根本原因是编码。在您的情况下,源的(XML文档)编码很可能是UTF-8或其他一些多字节编码。您的数据解析器或使用者很可能是ISO-8859-1或ASCII。这些字符(左右撇号)不是该字符集的一部分。因此,正确的解决方案是将解析器/处理器/消费者的编码更改为UTF-8。

如果不是这种情况,则可能相反。您有一个用UTF-8写下字符的过程,但是XML的编码不兼容(即ISO-8859-1)。

请记住:ISO-8859-1中的所有字符都以UTF-8映射,但并非相反。因此,从ISO-8859-1转换为UTF-8并不是问题。问题是当您必须往返于ISO-8859-1和UTF-8时。转换UTF-8字符时,那些不在ISO字符集中的字符将在您的显示器上显示为滑稽。作为问号或“’