Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Barbara Streisandasal
2024-11-05 16:13:02276semak imbas

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>

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!

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