【发布时间】:2015-01-19 22:53:25
【问题描述】:
我有一个以 Unicode 编码的 CSV,但开头缺少字节顺序标记。因此 Excel (2013) 在没有正确编码的情况下打开(如果没有指定 BOM,我认为它假定为 ASCII...),这意味着某些字符显示不正确。
通过阅读,我了解到应该在 CSV 文件的开头输入“\uFEFF”的 BOM。我尝试在 txt 编辑器中打开并添加字符,例如
\uFEFF
r1test 1, r1text2, r1text3
r2test 1, r2text2, r2text3
但是,这并不能解决问题 - 当我在 excel 中打开时,字符“\uFEFF”会显示在第一行,而不是被解释为 BOM。我不确定我做错了什么,以及应该如何指定文本的格式,以便将其解释为 BOM,而不是第一个数据中的文本
我在使用 CSV 方面的经验非常有限,而且只听说过 BOM……因此我可能完全错误地实现了这个!
(作为参考,我知道如果我在 excel 中使用导入数据选项,我可以指定编码......但是我真的想弄清楚如何提前正确指定它,以便我可以打开 csv ...我正在创建和导出数千个这样的文件——一旦我知道如何“手动”执行此操作[即通过在文件开头添加一些文本],我可以配置为在 Python 中自动执行) .
提前致谢
【问题讨论】:
-
可能是 stackoverflow.com/questions/934160/… 的副本,但正如那里的 cmets 所述,您真的不应该在 UTF-8 文件中放置 BOM(字节顺序标记) ,这是一种没有字节顺序的格式!
-
谢谢!!!虽然我认为我的问题不同,但它有足够的元素让我解决它。基本上,需要以 unicode 形式指定代码“\uFEFF”本身。即在 Python 中 u"\uFEFF" 而不仅仅是 "\uFEFF"。 (在我认为我拥有 unicode 格式的整个 CSV 之前,除了 BOM 以指定它是 unicode 格式)
标签: excel csv byte-order-mark