13

組み込みの open() 関数を使用して、Python 3.3 で UCS-2 BE ファイル (古いもの) をデコードできないようです (スタック トレースは UnicodeDecodeError を示し、私の readLine() メソッドが含まれています) - 実際、私はこのエンコーディングを指定するためのフラグが見つかりませんでした。

Windows 8 を使用すると、ターミナルは「Lucida Console」フォントを使用してコードページ 65001 に設定されます。

コード スニペットはあまり役に立たないでしょう。

def display_resource():
    f = open(r'D:\workspace\resources\JP.res', encoding=<??tried_several??>)
    while True:
        line = f.readline()
        if len(line) == 0:
            break

この問題への洞察に感謝します。

4

1 に答える 1

35

UCS-2 は UTF-16です。実際には、まだ UCS-2 と呼ばれていたときに割り当てられたすべてのコードポイントに対してです。

で開きencoding='utf16'ます。BOM (バイト オーダー マーク、先頭に 2 バイト、BE の場合は ) がない場合は\xfe\xff、 を使用encoding='utf_16_be'してバイト オーダーを強制します。

于 2013-01-23T20:10:58.977 に答える