作者superbear (bear)
看板Python
標題Re: [討論] file BOM
時間Sat Jan 22 03:34:52 2011
啊,感謝 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