我有一个 XML 文档,其中可能包含 shift-jis 编码数据,并且我正在尝试使用 NSXMLParser 对象来解析它。
通常我假设文档是UTF8编码的并且一切都很好 - 有谁知道我是否/如何确定一个元素是否是shift-jis编码的,然后如何解码它?
谢谢
最佳答案
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 声明或 transcoding bytes在将其输入解析器之前手动从 Shift-JIS 转换为 UTF-8 应该会有所帮助。
关于iphone - 如何使用 Cocoa (iPhone) 解码 XML 文档中的 shift-jis 编码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1356964/