V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
qazwsxkevin
V2EX  ›  Python

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

  •  
  •   qazwsxkevin · 2019-09-04 16:23:00 +08:00 · 1818 次点击
    这是一个创建于 1695 天前的主题,其中的信息可能已经有所发展或是发生改变。
    pyhon 有些其它库,如爬虫,NLP 之类的默认处理方式是 UTF-8,(不是全部,流行的而言)
    如果文本来源如果比较多花样,*.html,*.ini ,*.log 等等....
    编码有 GBK,GB2312,ASCII,Windows-1254 等等, 有东欧的也有西欧,再来个希伯来的脑裂。
    是否有适合的(现成的轮子)便捷一梭子转换成 UTF-8,或者直接成 String,而不必麻烦时间在此?
    (by the way:什么阿拉伯的编码,转不了 UTF-8 的,,可以考虑废弃字符)
    5 条回复    2019-09-06 21:41:23 +08:00
    ysc3839
        1
    ysc3839  
       2019-09-04 16:38:48 +08:00 via Android
    Python 自带各类编码,直接 decode 就行了。你可能是想自动检测编码,可以用 chardet 这个库。
    augustheart
        2
    augustheart  
       2019-09-04 18:10:26 +08:00
    这个功能目前没有一个有高准确性的库……好像也就 60%的正确率?
    ClericPy
        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 的, 导致解码失败, 但是浏览器上是不会乱码或报错
    qazwsxkevin
        4
    qazwsxkevin  
    OP
       2019-09-06 16:20:07 +08:00
    谢谢各位,我已经放弃了这个念头了。。。
    @ClericPy,正如你所说,遇上了混合编码的情况,已经弄不下去了,只能先把目标分好类别,批量套函数解决。
    ClericPy
        5
    ClericPy  
       2019-09-06 21:41:23 +08:00
    混合编码无所谓, 解析 DOM 的时候用二进制的, 解析出来的结果再解码就好了
    或者就是无脑的先 u8 再 gbk ignore
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5737 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:09 · PVG 14:09 · LAX 23:09 · JFK 02:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.