簡體   English   中英

從字符串替換非 UTF-8

[英]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.

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