在excel中写入csv文件时,特殊字符无法正确显示

时间:2017-06-28 16:38:09

标签: python excel csv unicode utf-8

我正在尝试将包含特殊字符(如中文字母和法语口音)的字符串写入csv文件。起初我得到了经典的Unicode编码错误,并在网上寻找解决方案。许多资源告诉我使用.encode('utf-8',errors ='ignore')来解决问题。这会在excel文件中放置字节。在我下面显示的代码中,我尝试获取将字符附加到csv文件以将字符转换为utf-8的函数。这使得程序运行没有错误,但是,当我打开excel文档时,我看到不是“é”和“蒋”被添加到文件中,我看到“Ô和“è”<“。

import csv

def appendToCSV(specialCharacter):
    with open('myCSVFile.csv',"a",newline="",encoding='utf-8') as csvFile:

        csvFileWriter = csv.writer(csvFile)
        csvFileWriter.writerow([specialCharacter])

    csvFile.close()

appendToCSV('é')
appendToCSV('蒋')

我想完全如图所示显示excel文档中的字符,任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

使用utf-8-sig进行编码。 Excel需要字节顺序标记(BOM)签名,否则它将以本地ANSI编码解释该文件。

答案 1 :(得分:0)

我非常确定您的 excel工作表已设置为使用&#34;拉丁语1&#34;。尝试switch the setting使用utf-8。

注意:

>>> x = "蒋"
>>> bs = x.encode()
>>> bs
b'\xe8\x92\x8b'
>>> bs.decode("latin")
'è\x92\x8b'

>>> x = 'é'
>>> bs = x.encode()
>>> bs.decode('latin-1')
'é'