【问题标题】:iOS write to CSV file: which encoding to useiOS 写入 CSV 文件:使用哪种编码
【发布时间】:2016-02-01 21:43:39
【问题描述】:

在我的 iOS 应用程序中,我有一个将数据写入 CSV 文件的功能。这在大多数情况下都可以正常工作:

[csvString writeToFile: filePath atomically:YES encoding: NSUTF8StringEncoding error:&error];

我最近收到一封来自日本用户的电子邮件,指出导出的 CSV 文件包含奇怪的符号而不是日语字符。所以我改用 NSUTF16StringEncoding,它似乎也适用于日文字符。

所以问题是:使用 NSUTF16StringEncoding 更好,还是这样做有什么缺点?似乎我见过的其他用于写入 CSV 文件的示例(包括CHCSVParser)使用 NSUTF8StringEncoding,所以我不确定更喜欢哪一个。

谢谢。

【问题讨论】:

    标签: ios csv character-encoding utf-16


    【解决方案1】:

    没有“更好”的编码。

    UTF-8 对每个字符使用可变数量的字节,从 1 到 4。UTF-16 始终为每个字符使用 2 个字节。什么是最好的,实际上取决于您和您的业务。理论上,如果您的用户主要位于亚洲并且主要使用非 ASCII 字符,那么以 UTF-16 编码的文件会更小。如果您的用户主要生活在西方世界并使用拉丁字母,则使用 UTF-8 可使每个文件缩小 50%。

    我相信您的问题不在于编码的选择,而在于演示文稿。文本编辑器无法猜测文件的编码,因此您的日本用户可能正在使用默认为 UTF-16 的文本编辑器,因此无法正确表示 UTF-8 字符序列。 这个问题的解决方案是使用 BOM 序列,按照这个 SO 答案:https://stackoverflow.com/a/2585194/192024(简而言之:只需在文件开头添加这 3 个字节,告诉编辑器使用什么编码)

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多