1

ファイルから最初の行を印刷しています:

with open(path,"r",encoding='utf8') as f:
    for i, l in enumerate(f.readlines()):
        print(bytes(l.rstrip(), encoding='utf8'))

b'1' を出力することを期待していますが、代わりに次のようになっています。

b'\xef\xbb\xbf1'

ここで何が問題なのですか?

私はWindowsを使用しており、メモ帳++を使用してファイルを保存しました。

4

3 に答える 3

6

BOM を正しく解析するには、utf-8-sigを使用します。

with open(path,"r",encoding='utf-8-sig') as f:
于 2012-06-14T22:35:03.797 に答える
2

Notepad++ が UTF-8 エンコードとしてマークするためにファイルの先頭に配置したバイト オーダー マーク (BOM)が表示されています。

于 2012-06-14T22:28:49.033 に答える
1

BOMの UTF-8 表現はバイト シーケンス0xEF,0xBB,0xBFです。テキストを ISO-8859-1 または CP1252 として解釈するテキスト エディターまたは Web ブラウザーは、このために文字  を表示します。


BOM インUTF-8は必要ありません。Notepad++ を構成できます。

于 2012-06-14T22:28:56.333 に答える