簡體   English   中英

print (encoding/edcoding) 法語字符在 txt 文件中有效,但在 excel/csv [python] 中不正確

[英]print (encoding/edcoding) French characters works in txt file but incorrect in excel/csv [python]

我得到了一個帶有特殊字符(應該是法語字符)的字符串,並希望它在 csv/excel 中正確顯示:

s1 = 'Benoît'

# take a look at encoding
print(s1.encode(encoding='utf-8'))

# print to txt
with open("firstname.txt", "w") as text_file:
    print(s1, file=text_file)

# print to csv
import pandas as pd
df = pd.DataFrame({'FirstName': [s1]})
df.to_csv('firstname.csv', index = False)

結果 txt 文件正確顯示法語,但 csv 沒有。

在此處輸入圖像描述

我的問題是如何讓 csv 正確顯示? (我可以將法語字符從 txt 復制到 csv,但是如何以編程方式編寫 csv 並正確顯示?)


更新:感謝@snakecharmerb,我嘗試了encoding = 'utf-8-sig'

# try csv with encoding = 'utf-8-sig': doesn't work
df = pd.DataFrame({'a': [s1]})
df.to_csv('firstname.csv', index = False, encoding = 'utf-8-sig')



# read from txt file which seems to display correctly
df = pd.read_table("firstname.txt", header = None)
df
#         0
# 0  Benoît

# then write to csv with encoding = 'utf-8-sig' - works
df.to_csv('firstname1.csv', index = False, encoding = 'utf-8-sig')

在此處輸入圖像描述

Excel 不一定會識別出文件被編碼為 UTF-8。 您可以在 Excel 中打開文件時指定 UTF-8 作為編碼,也可以使用“utf-8-sig”編碼編寫 csv 文件。

'utf-8-sig' 是 Excel 的 Windows 特定版本,它插入三個字符的“字節順序標記”(BOM)和文件的開頭。 Windows 應用程序試圖猜測文件的編碼將讀取 BOM 並從 UTF-8 解碼文件。 在其他平台上可能無法識別 BOM,導致文件開頭出現三個不尋常的字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM