Python3では、open
関数を使用してファイルを開く際に、エンコーディングを指定することができます。特に、UTF-8エンコーディングを指定してファイルを開く方法について説明します。
with open('utf-8.txt', encoding='utf-8') as fp:
text = fp.read()
上記のコードは、UTF-8エンコーディングでファイルを開き、その内容を読み込む例です。この方法を使用すれば、OSやロケール(LC_CTYPE)に依存せずにファイルを扱うことができます。
また、Python2とPython3の両方で動作するライブラリを作成する場合は、以下のようにバイナリモードでファイルを開いてからUTF-8に変換するか、codecs
モジュールを使用することが推奨されています。
import locale
import codecs
import six
locale.setlocale(locale.LC_CTYPE, ('C'))
with open('utf-8.txt', 'rb') as fp:
text1 = fp.read()
text1 = six.text_type(text1, 'utf-8')
with codecs.open('utf-8.txt', 'r', encoding='utf-8') as fp:
text2 = fp.read()
assert text1 == text2
この記事では、Python3でUTF-8エンコーディングを使用してファイルを開く方法について説明しました。この情報がPythonのファイル操作に役立つことを願っています。