使用Python中的BOM打开UTF-8


首先从结论

在Python中使用UTF-8 BOM进行读取时,对

进行编码

指定

\\'utf_8_sig \\'。

读取文件的示例
io.opne(filename, "r", encoding="utf_8_sig")

从str类型(UTF-8)转换为unicode类型
uni_string = unicode(str_string, 'utf_8_sig')

牡蛎介绍

我有点沉迷于阅读Python中的UTF-8,因此我将其写下来以防止忘记。

什么是BOM

UTF-8可能具有BOM(字节顺序标记)。
这是编码为UTF-8的标识符。
文件的前3个字节为\\'EF BB BF \\'。

问题在于存在带有BOM的UTF-8和不带有BOM的UTF-8。

具有BOM表的UTF-8附加到Windows \\'Notepad \\'或Excel。
Linux和Mac似乎基本上可以处理没有BOM的UTF-8。

在Python中使用UTF-8 BOM处理文件

这次我想加载在Excel中编辑过的csv,因此我不得不考虑BOM。

如果您认为它是

,则将其写在文档中。

标记为UTF-8的正式文档BOM表

如果将\\'utf_8_sig \\'设置为编码编解码器,则
如果有BOM,则将跳过并读取它。
如果没有BOM,则可以按原样将其读取为UTF-8。

样例程序

ImportCSV.py

1
2
3
4
import io

with io.open('sample.csv', 'rt', encoding='utf_8_sig') as f:
    print(f.readlines())

最后

字符代码在Python中容易上瘾,但是如果在转换为Unicode类型时可以正确处理字符代码,则不必担心字符代码。