Python での Unicode (UTF-8) の読み取りとファイルへの書き込み
Python で Unicode 文字列を扱う場合は、 Unicode 表現とファイル エンコーディング間の相互作用。次の例に示すように、微妙な誤解が予期しない結果を招く可能性があります:
<code class="python">ss = u'Capit\xe1n' ss8 = ss.encode('utf8') repr(ss), repr(ss8)</code>
出力では、文字列の Unicode 表現とその UTF-8 エンコード形式の間の不一致が明らかになります:
("u'Capit\xe1n'", "'Capit\xc3\xa1n'")
この混乱を避けるには、読み取りおよび書き込み時にファイルのエンコーディングを明示的に指定することが重要です。 Python 2.6 以降では、io モジュールはエンコードを指定できる io.open 関数を提供します:
<code class="python">import io f = io.open("test", mode="r", encoding="utf-8") f.read()</code>
このアプローチでは、f.read() はデコードされた Unicode オブジェクトを返します:
u'Capit\xe1l\n\n'
Python 3.x では、io.open 関数は組み込みの open 関数のエイリアスであり、エンコーディング引数もサポートしています。別のオプションは、コーデック モジュールを使用することです:
<code class="python">import codecs f = codecs.open("test", "r", "utf-8") f.read()</code>
ただし、コーデック モジュールを使用する場合、read() と readline() を混在させると問題が発生する可能性があることに注意してください。ファイルの読み取りおよび書き込み時にエンコーディングを明示的に指定すると、Unicode 文字列が正しく表現およびデコードされ、潜在的な落とし穴が回避されます。
以上がPython でファイルを読み書きするときに正しい Unicode 表現を保証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。