[英]Replacing non-UTF-8 from a string
這是代碼:
s = 'Waitematā'
w = open('test.txt','w')
w.write(s)
w.close()
我收到以下錯誤。
UnicodeEncodeError: 'charmap' codec can't encode character '\ā' in position 8: character maps to <undefined>
該字符串將與宏 a, 一起打印。 但是,我無法將其寫入 .txt 或 .csv 文件。
我可以將我們的長音 a, ā 換成沒有長音嗎? 我在這里先向您的幫助表示感謝。
請注意,如果您使用open('text.txt', 'w')
打開一個文件並向其中寫入一個字符串,那么您不是將字符串寫入文件,而是將編碼后的字符串寫入文件。 使用的編碼取決於您的LANG
環境變量或其他因素。
要強制使用 UTF-8,正如您在標題中所建議的,您可以嘗試以下操作:
w = open('text.txt', 'wb') # note for binary
w.write(s.encode('utf-8')) # convert str into byte explicitly
w.close()
如open 中所述:
在文本模式下,如果未指定編碼,則使用的編碼取決於平台:
locale.getpreferredencoding(False)
以獲取當前區域設置編碼。
並非所有編碼都支持所有 Unicode 字符。 由於編碼在未指定時依賴於平台,因此在讀取或寫入文本文件時明確並調用編碼會更好,更便攜。 UTF-8 支持所有 Unicode 代碼點:
s = 'Waitematā'
with open('text.txt','w',encoding='utf8') as w:
w.write(s)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.