Android SAXParser编码

Android SAXParser编码,android,xml,encoding,saxparser,Android,Xml,Encoding,Saxparser,我在编码方面有问题。首先,可能需要一点代码: URL xmlUrl = new URL("http://helion.pl/rss/GW/promocje.rss"); SAXParserFactory saxFactory = SAXParserFactory.newInstance(); SAXParser parser = saxFactory.newSAXParser(); XMLReader reader = parser.getXMLReader(); Helion xmlHan

我在编码方面有问题。首先,可能需要一点代码:

URL xmlUrl = new URL("http://helion.pl/rss/GW/promocje.rss");

SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser parser = saxFactory.newSAXParser();
XMLReader reader = parser.getXMLReader();

Helion xmlHandler = new Helion();
reader.setContentHandler(xmlHandler);

InputSource inputSource = new InputSource(xmlUrl.openStream());
inputSource.setEncoding("ISO-8859-1");

reader.parse(inputSource);
该文件编码为ISO-8859-2,但当我使用setEncoding(“ISO-8859-2”)时,不会读取该文件。请帮忙

DefaultHandler:

    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        currentTagName = qName;
        if (TAG_ITEM.equalsIgnoreCase(qName)) {
            odczyt = true;
            element = new Element();
        }
    }

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        String value = new String(ch, start, length);
        if (!value.trim().equals("")) {
            if (odczyt) {
                if (TAG_TYTOL.equalsIgnoreCase(currentTagName)) {
                    element.setTytol(value);
                } else if (TAG_OPIS.equalsIgnoreCase(currentTagName)) {
                    element.setOpis(value);
                }
            }
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        if (TAG_ITEM.equalsIgnoreCase(localName)) {
            odczyt = false;
            elementy.add(element);
        }
    }
}

在代码中,您将其设置为
ISO-8859-1
,这是非常不同的,这可能是问题所在吗?

正如Francis Upton提到的,可以在一个XML开始/结束元素中多次调用字符。 你应该这样做:

   @Override
public void characters(char[] ch, int start, int length)
            throws SAXException {
String s = new String(ch, start, length);
            if (mTextBuffer == null) {
                mTextBuffer = new StringBuffer(s);
            } else {
                mTextBuffer.append(s);
            }
}

然后在endElement方法中调用element.setTytol(mTextBuffer)/element.setOpis(mTextBuffer)

当我使用ISO-8859-1时,我会得到一个不完整的文本。我应该得到:a href=“width=“65px”align=“left”src=“。。。。。。我得到了:/a>Nie mog3e¨lepiej trafia!当您将编码设置为
ISO-8859-2
时,会发生什么情况?如果您对此有问题,请将其显示为示例代码,并解释尝试时发生的情况。请在您的答案(通过编辑)中添加更多关于发生的情况的信息,而不是注释。评论太难阅读。请将我的内容切到开头:a href=“width=“65px”align=“left”src=“”title=“Szalona strona fotografii。Niekonwencjonalne i twórcze techniki dla odważnych fotografów“alt=”szastf“/>请显示您的SAX字符方法。这可能是错误实现的。对于单个元素,可以多次调用它。