作者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
1F:→ holio:用正确的encoding开档後 你的line[0]好像就不会是BOM了?? 01/22 11:05
2F:→ superbear:可是我贴的code是真的跑过出来line[0]是u'\ufeff'耶 XD 01/22 12:56
3F:→ superbear:还是说我开档的方法不对 @@ 01/22 12:57
4F:→ holio:对喔 是我搞错 sorry 01/22 22:25
5F:→ uranusjr:其实照标准来讲 UTF-8 不应该有 BOM 01/23 06:47