Re: [討論] file BOM

看板Python作者 (bear)時間14年前 (2011/01/22 03:34), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串2/2 (看更多)
啊,感謝 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

01/22 11:05, , 1F
用正確的encoding開檔後 你的line[0]好像就不會是BOM了??
01/22 11:05, 1F

01/22 12:56, , 2F
可是我貼的code是真的跑過出來line[0]是u'\ufeff'耶 XD
01/22 12:56, 2F

01/22 12:57, , 3F
還是說我開檔的方法不對 @@
01/22 12:57, 3F

01/22 22:25, , 4F
對喔 是我搞錯 sorry
01/22 22:25, 4F

01/23 06:47, , 5F
其實照標準來講 UTF-8 不應該有 BOM
01/23 06:47, 5F
文章代碼(AID): #1DET_WPK (Python)
討論串 (同標題文章)
文章代碼(AID): #1DET_WPK (Python)