Python 3:CSV utf-8编码

use*_*968 3 python encoding utf-8 character-encoding python-3.x

我正在尝试使用Python 3编写一个带有非ascii字符的CSV.

import csv

with open('sample.csv', 'w', newline='', encoding='utf-8') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow("?")
Run Code Online (Sandbox Code Playgroud)

当我打开Excel文件时,请参阅å—¨.我在这里做错了吗?

Mar*_*som 5

您需要向Excel指出这是一个UTF-8文件; 它不会自动假设.

您可以通过在文件的开头添加字节顺序标记(BOM)来执行此操作:

with open('sample.csv', 'w', newline='', encoding='utf-8') as csvfile:
    csvfile.write('\ufeff')
Run Code Online (Sandbox Code Playgroud)

  • 还有`encoding ='utf_8_sig'`,它会自动插入BOM.从程序员的角度来看这很好,但对于编码纯粹主义者来说可能不那么好(因为UTF-8实际上不需要像UTF-16那样的BOM). (3认同)