小编All*_*lan的帖子

如何让SAX解析器从xml声明中确定编码?

我正在尝试解析来自不同来源的xml文件(我无法控制).其中大多数都是用UTF-8编码的,并且使用以下代码段不会导致任何问题:

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
FeedHandler handler = new FeedHandler();
InputSource is = new InputSource(getInputStream());
parser.parse(is, handler);
Run Code Online (Sandbox Code Playgroud)

由于SAX默认为UTF-8,这很好.但是有些文件声明:

<?xml version="1.0" encoding="ISO-8859-1"?>
Run Code Online (Sandbox Code Playgroud)

即使声明ISO-8859-1 SAX仍然默认为UTF-8.只有我添加:

is.setEncoding("ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)

SAX会使用正确的编码吗?

如何在没有专门设置的情况下让SAX自动检测xml声明中的正确编码?我需要这个,因为我事先不知道文件的编码是什么.

艾琳,提前谢谢

java xml encoding sax xml-parsing

25
推荐指数
2
解决办法
3万
查看次数

标签 统计

encoding ×1

java ×1

sax ×1

xml ×1

xml-parsing ×1