1
ysc3839 2019-09-04 16:38:48 +08:00 via Android
Python 自带各类编码,直接 decode 就行了。你可能是想自动检测编码,可以用 chardet 这个库。
|
2
augustheart 2019-09-04 18:10:26 +08:00
这个功能目前没有一个有高准确性的库……好像也就 60%的正确率?
|
3
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 的, 导致解码失败, 但是浏览器上是不会乱码或报错 |
4
qazwsxkevin OP 谢谢各位,我已经放弃了这个念头了。。。
@ClericPy,正如你所说,遇上了混合编码的情况,已经弄不下去了,只能先把目标分好类别,批量套函数解决。 |
5
ClericPy 2019-09-06 21:41:23 +08:00
混合编码无所谓, 解析 DOM 的时候用二进制的, 解析出来的结果再解码就好了
或者就是无脑的先 u8 再 gbk ignore |