首頁 >後端開發 >Python教學 >如何在Python中正確讀寫Unicode(UTF-8)檔案?

如何在Python中正確讀寫Unicode(UTF-8)檔案?

Susan Sarandon
Susan Sarandon原創
2024-11-05 02:35:02170瀏覽

How Can I Read and Write Unicode (UTF-8) Files Correctly in Python?

Python 中的Unicode (UTF-8) 檔案I/O

在Python 中,處理文件中的Unicode 文字涉及編碼和編碼解碼操作。然而,理解這些概念可能具有挑戰性,如一個常見問題所示:

解碼混亂:

考慮Python 2.4 中的以下程式碼:

<code class="python">ss = u'Capit\xe1n'
ss8 = ss.encode('utf8')
print(ss, ss8)</code>

此程式碼輸出:

Capit\xe1n b'Capit\xc3\xa1n'

a 銳音字元(á) 在Unicode (u'Capitxe1n') 和UTF-8 (ss8 = 'Capitxc3xa1n') 中的表示方式不同。列印 ss8 時,Python 預設使用 ASCII 表示形式,因此是 xc3xa1n 序列。

以寫入模式開啟檔案「f1」並寫入 ss8 會導致「Capitxc3xa1nn」寫入該檔案。相反,當將 ss 寫入另一個檔案「f2」時,Python 會嘗試將 a-acute 字元解釋為轉義序列,結果是「Capitxc3xa1nn」。

解碼解決方案:

要解決此混亂,請在開啟檔案時明確指定編碼。在 Python 2.6 及更高版本中,可以使用 io.open 函數:

<code class="python">import io
f = io.open("test", mode="r", encoding="utf-8")</code>

這種方法可以確保檔案以 UTF-8 方式讀寫,無需手動編碼和解碼。在Python 3.x中,io.open函數是內建open函數的別名,它也支援encoding參數。

或者,可以使用codecs模組:

<code class="python">import codecs
f = codecs.open("test", "r", "utf-8")</code>

需要注意的是,混合使用 read() 和 readline() 方法可能會在使用codecs.open 時導致問題。

以上是如何在Python中正確讀寫Unicode(UTF-8)檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn