可有比较齐全的文本编码任转成 UTF-8 轮子?

2019-09-04 16:23:00 +08:00
 qazwsxkevin
pyhon 有些其它库,如爬虫,NLP 之类的默认处理方式是 UTF-8,(不是全部,流行的而言)
如果文本来源如果比较多花样,*.html,*.ini ,*.log 等等....
编码有 GBK,GB2312,ASCII,Windows-1254 等等, 有东欧的也有西欧,再来个希伯来的脑裂。
是否有适合的(现成的轮子)便捷一梭子转换成 UTF-8,或者直接成 String,而不必麻烦时间在此?
(by the way:什么阿拉伯的编码,转不了 UTF-8 的,,可以考虑废弃字符)
1908 次点击
所在节点    Python
5 条回复
ysc3839
2019-09-04 16:38:48 +08:00
Python 自带各类编码,直接 decode 就行了。你可能是想自动检测编码,可以用 chardet 这个库。
augustheart
2019-09-04 18:10:26 +08:00
这个功能目前没有一个有高准确性的库……好像也就 60%的正确率?
ClericPy
2019-09-06 10:57:35 +08:00
先定位需求, 你说了转不了的放弃, 所以可以判断是非英文里只计划转码中文
然后查看一些验证编码的方式
1. chardet, 这个性能受损比较严重, 虽然还算准, 但是依然不太可靠
2. 对于网页, headers / head>meta 等地方有声明编码, 可以参考 requests 库怎么实现的
3. 是我最喜欢的中英文网站解码方式, 也是 5 年前听依云提到的, 先 try utf8 解码, 如果报错, 再使用 gb18030, 因为先用 gb18030 会不报错而解出乱码, 所以要先用 u8 解码.
以上三者都无法像浏览器一样解决一个问题, 那就是混合编码的坑爹情况, 也就是某些二手程序员在已有 utf8 网站里复制了一段放着分享按钮的代码, 这段代码可能会是 gbk 的, 导致解码失败, 但是浏览器上是不会乱码或报错
qazwsxkevin
2019-09-06 16:20:07 +08:00
谢谢各位,我已经放弃了这个念头了。。。
@ClericPy,正如你所说,遇上了混合编码的情况,已经弄不下去了,只能先把目标分好类别,批量套函数解决。
ClericPy
2019-09-06 21:41:23 +08:00
混合编码无所谓, 解析 DOM 的时候用二进制的, 解析出来的结果再解码就好了
或者就是无脑的先 u8 再 gbk ignore

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/597905

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX