我正在开发一个调用休息网络服务的应用。有时,xml响应包含手机无法显示的字符。显示这些字符时,会显示一个空框。我想过滤掉这些字符。如何检测字符是否能够在屏幕上显示?
一些特定字符包括:
http://www.fileformat.info/info/unicode/char/0094/index.htm http://www.fileformat.info/info/unicode/char/0080/index.htm http://www.fileformat.info/info/unicode/char/0092/index.htm
答案 0 :(得分:5)
Android支持以下encodings
US_ASCII不应该有任何问题。
对于ISO_8859_1,您应该检查wiki 对于控制字符0x00-0x1f和0x7f-0x9f并过滤它们。 当然使用匹配的字体。
使用UTF_8或16更复杂,请阅读Joels The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
您可能会发现此邮件list很有用。
答案 1 :(得分:1)
首先,尝试使用以下命令获取设备的默认字符集:
Charset.defaultCharset();
然后尝试使用XML声明的伪属性或HTTP调用的Content-Type标头来查看XML的字符集。
例如:
<?xml version="1.0" encoding="utf-8" ?>
或
Content-Type: text/html; charset=utf-8
如果设备的默认字符集与XML的字符集不同,则在处理新字符串时必须注意:
new String( bytes);
因为如果您忘记指定正确的编码,Dalvik将使用具有合理显示错误的设备的默认编码。
记得使用:
new String( bytes, encoding);
答案 2 :(得分:0)
看来我可以在每个角色上调用Character.isIdentifierIgnorable()
,如果可以忽略则不包含它。 Character.isISOControl()
也可能有用。