gpt4 book ai didi

java - 编码问题

转载 作者:行者123 更新时间:2023-12-01 07:42:39 24 4
gpt4 key购买 nike

我必须解析从网络获取的内容,它可能包含特殊字符。在这种情况下,内容字符串如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<id>1</id>
<price>2.14</price>
<title>test &#382; test</title>

当上面的内容被传递给方法characters()时,在从org.xml.sax.helpers.DefaultHandler扩展的类中:

public class ProductsXMLHandler extends DefaultHandler {
...

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String elementValue = new String(ch, start, length);
...
}

我注意到数组 test ž test 分为三个数组:'test'、'ž' 和 'test'所以 elementValue 不等于 test ž test 这应该是结果。有谁知道如何解决这个问题吗?

是否需要重新编码源字符串:

 <?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<id>1</id>
<price>2.14</price>
<title>test &#382; test</title>

在传递给 XML 处理程序类之前?

谢谢!

最佳答案

如J on Skeet said in in answer , characters 被调用多次。您应该执行以下操作:

  • startTag 中,创建一个 StringBuffer,并记下(例如 boolean 值)您是否位于要搜索的正确标记中。
  • 字符中,如果在正确的标签中(如果前面设置的 boolean 值为true),则将字符放入StringBuffer
  • endTag 中,如果您走出了正确的标记(参见 boolean 值,与之前相同),则获取 StringBuffer 的内容,瞧!这是您的完整字符串。之后不要忘记清空 StringBuffer。

关于java - 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1991615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com