我有一个XML文档,可能在其中包含shift-jis编码数据,我正在尝试使用NSXMLParser对象解析它。
通常我假设文档是UTF8编码的,一切都很好 - 有没有人知道我是否可以确定元素是否是shift-jis编码然后如何解码它?
由于
答案 0 :(得分:1)
XML文档是UTF-8编码的,除非它具有另外说明的XML声明,例如:
<?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文档,解析器也不会读它。
如果您只是缺少编码声明,那么您真的需要在源端修复它,但同时在适当的XML声明中进行修复或从Shift手动transcoding bytes -JIS到UTF-8,然后将它送入解析器应该有帮助。