如何删除从Web服务返回的无法识别的字符?

我正在开发一个叫rest网络服务的应用程序。 有时,xml响应包含手机无法显示的字符。 显示这些字符时,会显示一个空框。 我想过滤掉这些字符。 如何检测字符是否能够在屏幕上显示?

一些特定字符包括:

http://www.fileformat.info/info/unicode/char/0094/index.htm http://www.fileformat.info/info/unicode/char/0080/index.htm http://www.fileformat。信息/资讯/ Unicode的/炭/ 0092 / index.htm的

Android支持以下编码

  • Xml.Encoding ISO_8859_1
  • Xml.Encoding US_ASCII
  • Xml.Encoding UTF_16
  • Xml.Encoding UTF_8

US_ASCII不应该有任何问题。

对于ISO_8859_1,你应该检查wiki的控制字符0x00-0x1f和0x7f-0x9f并过滤它们。 当然使用匹配的字体。

使用UTF_8或16更复杂,阅读Joels 绝对最低每个软件开发人员绝对必须知道Unicode和字符集

您可能会发现此邮件列表很有用。

首先,尝试使用以下设备获取设备的默认字符集:

Charset.defaultCharset(); 

然后尝试使用XML声明的伪属性或HTTP调用的Content-Type标头来查看XML的charset。
例如:

  

要么

 Content-Type: text/html; charset=utf-8 

如果设备的默认字符集与XML的字符集不同,则在处理新字符串时必须注意:

 new String( bytes); 

因为如果您忘记指定正确的编码,Dalvik将使用具有合理显示错误的设备的默认编码。
记得使用:

 new String( bytes, encoding); 

看来我可以在每个字符上调用Character.isIdentifierIgnorable() ,如果它是可忽略的则不包含它。 Character.isISOControl()可能也会起作用。