Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Membaca dan Menulis Fail Unicode (UTF-8) dengan Betul dalam Python?

Bagaimanakah Saya Boleh Membaca dan Menulis Fail Unicode (UTF-8) dengan Betul dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-11-05 02:35:02175semak imbas

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

I/O Fail Unicode (UTF-8) dalam Python

Dalam Python, pengendalian teks Unicode dalam fail melibatkan operasi pengekodan dan penyahkodan. Walau bagaimanapun, memahami konsep ini boleh mencabar, seperti yang ditunjukkan oleh isu biasa:

Kekeliruan Penyahkodan:

Pertimbangkan kod berikut dalam Python 2.4:

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

Kod ini mengeluarkan:

Capit\xe1n b'Capit\xc3\xa1n'

Aksara a-acute (á) diwakili secara berbeza dalam Unicode (u'Capitxe1n') dan UTF-8 (ss8 = 'Capitxc3xa1n'). Apabila mencetak ss8, Python lalai kepada perwakilan ASCII, maka urutan xc3xa1n.

Membuka fail 'f1' dalam mod tulis dan menulis ss8 kepadanya menyebabkan 'Capitxc3xa1nn' ditulis pada fail. Sebaliknya, apabila menulis ss ke fail lain 'f2', Python cuba mentafsir aksara a-acute sebagai jujukan melarikan diri, menghasilkan 'Capitxc3xa1nn'.

Penyelesaian Penyahkodan:

Untuk menyelesaikan kekeliruan ini, nyatakan pengekodan secara eksplisit apabila membuka fail. Dalam Python 2.6 dan lebih baru, fungsi io.open boleh digunakan:

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

Pendekatan ini memastikan fail dibaca dan ditulis dalam UTF-8, menghapuskan keperluan untuk pengekodan dan penyahkodan manual. Dalam Python 3.x, fungsi io.open ialah alias untuk fungsi terbuka terbina dalam, yang turut menyokong hujah pengekodan.

Sebagai alternatif, modul codec boleh digunakan:

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

Adalah penting untuk ambil perhatian bahawa mencampurkan kaedah read() dan readline() boleh menyebabkan masalah apabila menggunakancodecs.open.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca dan Menulis Fail Unicode (UTF-8) dengan Betul dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn