Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah saya memastikan perwakilan Unicode yang betul semasa membaca dan menulis fail dalam Python?

Bagaimanakah saya memastikan perwakilan Unicode yang betul semasa membaca dan menulis fail dalam Python?

Barbara Streisand
Lepaskan: 2024-11-05 16:13:02
asal
340 orang telah melayarinya

How do I ensure correct Unicode representation when reading and writing files in Python?

Unicode (UTF-8) Membaca dan Menulis ke Fail dalam Python

Apabila bekerja dengan rentetan Unicode dalam Python, adalah penting untuk memahami interaksi antara perwakilan Unicode dan pengekodan fail. Salah faham yang halus boleh membawa kepada hasil yang tidak dijangka, seperti yang ditunjukkan dalam contoh berikut:

<code class="python">ss = u'Capit\xe1n'
ss8 = ss.encode('utf8')
repr(ss), repr(ss8)</code>
Salin selepas log masuk

Output mendedahkan percanggahan antara perwakilan Unikod rentetan dan bentuk yang dikodkan UTF-8:

("u'Capit\xe1n'", "'Capit\xc3\xa1n'")
Salin selepas log masuk

Untuk mengelakkan kekeliruan ini, adalah penting untuk menyatakan pengekodan fail secara eksplisit semasa membaca dan menulis. Dalam Python 2.6 dan yang lebih baru, modul io menyediakan fungsi io.open yang membolehkan menentukan pengekodan:

<code class="python">import io

f = io.open("test", mode="r", encoding="utf-8")
f.read()</code>
Salin selepas log masuk

Dengan pendekatan ini, f.read() mengembalikan objek Unicode yang dinyahkod:

u'Capit\xe1l\n\n'
Salin selepas log masuk

Dalam Python 3.x, fungsi io.open ialah alias untuk fungsi terbuka terbina dalam, yang turut menyokong hujah pengekodan. Pilihan lain ialah menggunakan modul codec:

<code class="python">import codecs

f = codecs.open("test", "r", "utf-8")
f.read()</code>
Salin selepas log masuk

Walau bagaimanapun, ambil perhatian bahawa mencampurkan read() dan readline() boleh mengakibatkan masalah apabila menggunakan modul codec. Dengan menyatakan pengekodan secara eksplisit semasa membaca dan menulis fail, anda memastikan rentetan Unicode diwakili dan dinyahkodkan dengan betul, mengelakkan kemungkinan perangkap.

Atas ialah kandungan terperinci Bagaimanakah saya memastikan perwakilan Unicode yang betul semasa membaca dan menulis fail 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