LoginSignup
2
1

More than 5 years have passed since last update.

Python3でのwindows上のテキスト設定ファイルの読み方

Posted at
初めて投稿します。素人の年寄りが少しずつpythonを始めています。備忘録として投稿します。

目的

windowsで扱われているテキストベースの設定ファイルの文字コードは、ほとんどがSJISで書かれていてるが、NT系からの流れか、UTF-16で書かれたファイルもある。いろんな設定ファイルをwindowsにてメモ帳で開いて保存ウインドで表記される文字コード(E): の表記とPythonで読み取るべきコードの対比をまとめました。

内容

メモ帳での文字コード(E): pythonでのエンコード 一般的なコード名
ANSI CP932 SHIFT-JIS
Unicode utf-16 UTF-16(リトルエンディアン) BOM付き
Unicode big endian utf-16 UTF-16(ビッグエンディアン)BOM付き
UTF-8 utf-8-sig UTF-8 BOM付き

確認

test.py
ld = open(Unicode.txt,encoding="utf-16")
lines = ld.readlines()
ld close()
print(lines)

Openするテキストファイルとエンコードキーワードをいろいろ変えて確認しました。
メモ帳では、UTF-8、UTF-16 もすべてBOM付きとして扱われて、Python3ではUTF-8の場合はBOM付きのエンコードである"utf-8-sig"でエンコードして、UTF-16 の場合はBOM付きの場合はリトルエンディアン/ビックエンディアンの指定なしに"utf-16"でエンコードしてくれる。-sigなんてのもいらない。(BOM無の場合は、"utf-16-le","utf-16-be"が必要らしい。Unicode.txtを"utf-16-le"でエンコードすると先頭にBOMが見えたので。。。)

感想

知っている方には当たり前かもしれないけれど、コード体系のよくわかっていない素人の私が理解するにはコードの名称定義がそれぞれで曖昧にみえてしまい、時間がかかりました。
私自身で確認した結果のことなので齟齬があるかもしれませんが、とりあえずwindowsの世界でUnicodeとして定義されてるファイルは読める様になりました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1