代码之家  ›  专栏  ›  技术社区  ›  Jay Askren

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

  •  3
  • Jay Askren  · 技术社区  · 14 年前

    我正在开发一个称为REST Web服务的应用程序。有时,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

    3 回复  |  直到 7 年前
        1
  •  5
  •   Rahul Sharma Rashid Kurbanov    7 年前

    Android支持以下功能 encodings

    • xml.编码iso__1
    • xml.encoding我们\u ascii
    • xml.编码utf_16
    • xml.编码utf_8

    我们不应该制造任何问题。

    对于iso__1,您应该检查 wiki 用于控制字符0x00-0x1F和0x7F-0x9F并对其进行筛选。 当然要使用匹配的字体。

    Joels说,使用utf_8或16更复杂。 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets

    你可能会发现这封邮件 list 有用的。

        2
  •  1
  •   systempuntoout    14 年前

    首先,尝试通过以下方式获取设备的默认字符集:

    Charset.defaultCharset();
    

    然后尝试在XML声明的伪属性或HTTP调用的内容类型头中查找XML的字符集。
    例如:

    <?xml version="1.0" encoding="utf-8" ?>
    

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

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

    new String( bytes);
    

    因为如果忘记指定正确的编码,dalvik将使用设备的默认编码,并显示可能的错误。
    记住使用:

    new String( bytes, encoding);
    
        3
  •  0
  •   Jay Askren    14 年前

    看来我可以打电话 Character.isIdentifierIgnorable() 在每个字符上,如果它是可忽略的,则不包括它。 Character.isISOControl() 也可能有效。