2017-06-28 137 views
0

我正在嘗試將包含特殊字符(如中文字母和法國口音)的字符串寫入csv文件。起初,我得到了經典的Unicode編碼錯誤,並在網上尋找解決方案。許多資源告訴我使用.encode('utf-8',errors ='ignore')來解決問題。這將字節放在excel文件中。在我下面顯示的代碼中,我嘗試獲得將字符附加到csv文件以將字符轉換爲utf-8的函數。這使得程序運行時沒有錯誤,但是,當我打開Excel文檔時,我發現代替「é」和「蔣」被添加到文件中,我看到「Ã」和「è'<」。在Excel中寫入csv文件時特殊字符不能正確顯示

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文檔中的字符完全如圖所示,任何幫助將不勝感激。謝謝。

回答

0

我很確定你的excel工作表設置爲使用「Latin 1」。嘗試使用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') 
'é' 
+0

我已經將excel文件更改爲UTF-8,但沒有任何更改。字符仍然在Excel文件中顯示不正確。我試着將中文字母複製並粘貼到excel文件中,但是當我保存並再次打開時,中文字母被替換爲「?」。 –

+0

@ WilliamO'Neill你究竟如何改變「excel文件」?你是什​​麼意思? –

+0

我點擊了「另存爲」,並且在什麼類型的文件中,我想將它保存爲(CSV)有一個「UTF-8」選項 –

0

使用utf-8-sig的編碼。 Excel需要字節順序標記(BOM)簽名,否則它將以本地ANSI編碼解釋文件。

相關問題