0

由于字符串中的特殊字符,我的应用程序出现故障。

例1:你能看到吗?显示的字符而不是'。

文本:
巴黎拉德芳斯希尔顿酒店位于新凯旋门脚下,地处欧洲最大的商业区的正中心,让您可以轻松前往巴黎一些最著名的景点。只有几分钟的路程...

截屏 :
在此处输入图像描述

例如 2:使用 AXIOM 解析具有特殊字符(如 '、& 等)的 XML 时的解析器异常。

XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new StringBufferInputStream(responseXML));
OMElement documentElement = new StAXOMBuilder(parser).getDocumentElement();

我发现很多帖子在被发现时将其删除。例如: 如何去除 MySQL 中不适合 utf8 编码的坏字符? 使用声明的 encoding=utf-8 从 xml 中删除非 UTF-8 字符 - Java

我正在使用以下字符来删除不符合 UTF 的字符。

if (null == inString ) return null;

byte[] byteArr = inString.getBytes();

for ( int i=0; i < byteArr.length; i++ ) {
   byte ch= byteArr[i]; 
   if ( !(ch < 0x00FD && ch > 0x001F) || ch =='&' || ch=='#') {
      byteArr[i]=' ';
   }
}

return new String( byteArr );

但这会导致另一个问题,即删除一些信息字符,如 '.

我想做的是,我想以有意义的方式替换它们,而不是简单地删除它们。例如:' 可以替换为 ',& 可以替换为 'and' 等。有什么标准方法可以做到这一点,而不是手动一一替换?

4

1 回答 1

1

StringBufferInputStream的javadoc

已弃用。 此类没有正确地将字符转换为字节。从 JDK 1.1 开始,从字符串创建流的首选方法是通过 StringReader 类。

不要使用它。

该文件被读取为字节,无论它来自何处。如果您首先需要将数据作为字节,则永远不要将其转换为字符串。

如果您正在读取文件,请使用 FileInputStream。(永远不要使用 FileReader,因为它不允许您指定编码。)

于 2013-06-24T08:10:40.373 回答