0

我有一个 XML 文档,其中可能包含 shift-jis 编码数据,我正在尝试使用 NSXMLParser 对象对其进行解析。

通常我假设文档是 UTF8 编码的,一切都很好 - 有谁知道我是否/如何确定一个元素是否是 shift-jis 编码的,然后如何解码它?

谢谢

4

1 回答 1

1

除非 XML 声明另有说明,否则 XML 文档是 UTF-8 编码的,例如:

<?xml version="1.0" encoding="shift_jis"?>

或者:

<?xml version="1.0" encoding="cp932"?>

任何 XML 解析器都应该检测 XML 声明中给出的编码。(有些解析器可能不支持某些 CJK 编解码器,所以会抱怨,但 AIUI NSXMLParser 应该没问题。)

如果您的文件包含 Shift-JIS 字节序列但没有这样的规定编码,或者在某些元素中包含 Shift-JIS 字节序列而在其他元素中包含 UTF-8,那么您所拥有的文件格式不正确;它根本不是 XML 文档,也没有解析器会读取它。

如果您刚刚丢失了编码声明,您确实需要在源端修复它,但与此同时,在输入到解析器应该有帮助。

于 2009-08-31T13:56:35.900 回答