如何删除从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()
可能也会起作用。