HTML解析Android中的特殊字符

时间:2012-12-07 10:46:42

标签: android html unicode

我有这个简单的问题:一旦我检索到邮件文本,有时会发生Html.fromHtml无法正确解析字符串的问题。

我会举个例子。这是HTML字符串:

&#‪8211‬;&#‪8211‬;&#‪8211‬;&#‪8211‬;&

它必须是这样的:

---------------------------

Android有没有办法实现这一目标?我需要使用正则表达式吗?

非常感谢你。

2 个答案:

答案 0 :(得分:2)

示例中的字符串是–––&(字面意思)的HTML表示法,因此正确的浏览器行为就是以这种方式呈现它。由于某些原因无法从描述中猜到,某些软件已经应用 double 编码,首先将em短划线“ - ”编码为–,然后对{{1}进行编码再次,&

顺便说一下,一系列连续的em破折号可能会也可能不会产生连续的线;这取决于字体。有更可靠的方法来生成长行,例如CSS中的&元素和边框属性。

答案 1 :(得分:2)

您可以使用以下内容过滤掉隐藏的字符(在本例中)

myString = myString.replaceAll( "[\\u202C\\u202A]", "" );

之后只是:

Html.fromHtml(myString);

它将在html上下文中工作。或者如果你想要真正的短划线字符:

Html.fromHtml(Html.fromHtml(myString));

概念的演示:http://jsfiddle.net/CGzDc/(javascript,你将不得不在这个java的答案中使用代码)