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

Susan Sarandon
Lepaskan: 2024-11-05 02:35:02
asal
104 orang telah melayarinya

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>
Salin selepas log masuk

Kod ini mengeluarkan:

Capit\xe1n b'Capit\xc3\xa1n'
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!