如何删除从网络服务返回的无法识别的字符?
我正在开发一个调用休息网络服务的应用程序。有时,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
I am working on an app which calls a rest web service. Sometimes the xml responses contain characters which the phone can not display. When displaying these characters, an empty box is displayed instead. I would like to filter out these characters. How can I detect if a character will be able to be displayed on the screen?
Some specific characters include:
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Android 支持以下 编码
US_ASCII 应该不会产生任何问题。
对于 ISO_8859_1,您应该检查 wiki
用于控制字符 0x00-0x1f 和 0x7f-0x9f 并过滤它们。
当然,使用匹配的字体。
使用 UTF_8 或 16 更为复杂,请阅读 Joels 每个软件开发人员绝对必须了解的绝对最低限度Unicode 和字符集
您可能会找到此邮件列表 有用。
Android support the following encodings
US_ASCII shouldn't make any problems.
For ISO_8859_1 you should check wiki
for control chars 0x00-0x1f and 0x7f-0x9f and filter them.
And of course use a matching font.
Using UTF_8 or 16 is more complex, read Joels The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
You might find this mailing list useful.
首先,尝试使用以下方法获取设备的默认字符集:
然后尝试在 XML 声明的伪属性或 HTTP 调用的 Content-Type 标头中查找 XML 的字符集。
例如:
或
如果你的设备的默认字符集与 XML 的字符集不同,则在处理新字符串时必须注意:
因为如果你忘记指定正确的编码,Dalvik 将使用设备的默认编码有可能的显示错误。
记住使用:
First of all, try to get the default charset of your device with:
Then try to get the charset of your XML looking in pseudo-attribute of the XML declaration or in Content-Type header of the HTTP call.
For example:
or
If the default charset of your device is different from the charset of XML, you have to pay attention when you handle new strings with:
because if you forget to specify the correct encoding, Dalvik will use the default encoding of the device with plausible display errors.
Remember to use:
看来我可以对每个字符调用
Character.isIdentifierIgnorable()
,如果它是可忽略的,则不包含它。Character.isISOControl()
可能也可以工作。It appears I can call
Character.isIdentifierIgnorable()
on each character and not include it if it is ignorable.Character.isISOControl()
will probably also work.