iphone - 如何使用 Cocoa (iPhone) 解码 XML 文档中的 shift-jis 编码数据

标签 iphone xml cocoa cocoa-touch nsxmlparser

我有一个 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/

相关文章:

iphone - 将 Twilo sdk 集成到 iOS 时出现异常

c# - 如何通过套接字发送大的 xml 文件

xml - xPath:仅当子元素不包含特定值时才选择父元素

objective-c - 在 NSArray 上使用 valueForKeyPath,如果属性设置为 YES,如何计算 BOOL 属性

iphone - 如何像Notes App一样设置UITextView内容inset

iOS 使用别人的 .p12 和 .mobileprovision 发布 IPA

java - 无法从 Spring Boot Controller 获取 web.xml 中的上下文参数

swift - 如何从顶部而不是从底部添加 NSButtons?

macos - 如何在文件图标上显示进度条

iphone - 如果未安装 Facebook 原生应用,请打开 Facebook i safari