Tyr*_*ion 4 python csv utf-8 character-encoding
我正在使用 Python CSV 库读取两个 CSV 文件。
一种是用UTF-8-BOM编码,另一种是用UTF-8编码。在我的实践中,我发现这两个文件都可以通过使用“utf-8-sig”作为编码类型来读取:
from csv import reader
with open(file_path, encoding='utf-8-sig') as csv_file:
c_reader = reader(csv_file, delimiter=',')
headers = next(c_reader)
for row in c_reader:
print(row)
Run Code Online (Sandbox Code Playgroud)
我想确认一下,“utf-8-sig”是否适合解码UTF-8和UTF-8 BOM?我使用的是 Python 3.6 和 3.7 版本。感谢您的回答!
utf-8-sig 编解码器将解码 utf-8-sig 编码的文本和使用标准 utf-8 编码编码的文本
\n>>> s = \'Stra\xc3\x9fe\'\n>>> utf8_sig = s.encode(\'utf-8-sig\')\n>>> utf8 = s.encode(\'utf\')\n>>> print(utf8_sig.decode(\'utf-8-sig\'))\nStra\xc3\x9fe\n>>> print(utf8.decode(\'utf-8-sig\'))\nStra\xc3\x9fe\nRun Code Online (Sandbox Code Playgroud)\n来自编解码器文档:
\n\n\n在将任何 Unicode 字符写入文件之前,会写入 UTF-8 编码的 BOM(字节序列看起来像这样:0xef、0xbb、0xbf)...在解码 utf-8-sig 时将跳过这三个字节(如果它们出现在文件中的前三个字节)。
\n
utf-8-sig 编码在 Windows 环境中最常见。如果您与 mac 或 *nix 系统上的用户共享文件,则他们期望收到的是标准 utf-8 编码。
\n