看板 Python 關於我們 聯絡資訊
啊,感謝 holio 原來有這種硬猜 encoding 的 lib XD 不過我想要的是幫我開檔案吐 unicode string 給我的東西, 有一點點不太一樣 :p 用 chardet 省掉自己列舉 BOM 的功夫, 沒有 BOM 的 file 他也可以猜,這點很棒 可是他不會告訴我這檔案有沒有 BOM,所以我還是要自己認 o.o 比如說 >>> import chardet, codecs >>> encoding = chardet.detect(open(file_path, 'rb').read(5))['encoding'] >>> encoding 'UTF-16LE' >>> with codecs.open(file_path, mode='r', encoding=encoding) as f: ... line = f.readline() 這樣 line[0] 有可能是 u'\ufeff' (就是 utf16-le 的 BOM) 也有可能是我要的 file content (也就是說這檔案沒 BOM) 所以我還要 try line[0].decode() 來決定要不要閃掉這個字.... 請容我不知足的問問有沒有更懶惰的解... XD -- 天地のはざまに迷えし古来より生まれし邪悪な精霊よ 聖なる処女の柔肌に纏いし衣の雷で 汚れも濁りも淀みも凝りも 微塵に砕いて天地に返す! 悔い改めよ! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.118.49
holio:用正確的encoding開檔後 你的line[0]好像就不會是BOM了?? 01/22 11:05
superbear:可是我貼的code是真的跑過出來line[0]是u'\ufeff'耶 XD 01/22 12:56
superbear:還是說我開檔的方法不對 @@ 01/22 12:57
holio:對喔 是我搞錯 sorry 01/22 22:25
uranusjr:其實照標準來講 UTF-8 不應該有 BOM 01/23 06:47