【问题标题】:How to mannually specify Byte Order Mark in CSV如何在 CSV 中手动指定字节顺序标记
【发布时间】: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


【解决方案1】:

对于想要告诉 Excel 添加 BOM 的其他人:查看是否可以“另存为 Unicode 文本”。

source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多