Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya memastikan perwakilan Unicode yang betul semasa membaca dan menulis fail dalam 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>
Output mendedahkan percanggahan antara perwakilan Unikod rentetan dan bentuk yang dikodkan UTF-8:
("u'Capit\xe1n'", "'Capit\xc3\xa1n'")
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>
Dengan pendekatan ini, f.read() mengembalikan objek Unicode yang dinyahkod:
u'Capit\xe1l\n\n'
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>
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!