工行的一个包含汉字的 JS 文件。
他应该是在这个 JS 文件里写了一些配置信息。
同时有两个 JS 文件 1 个显示正常, 1 个显示乱码。
显示正常的路径: http://www.icbc.com.cn/ICBC/ICBCCOIN/coinparamData.js
显示乱码的路径: http://www.icbc.com.cn/ICBC/ICBCCOIN/coinBookData.js
显示乱码的文件:
urllib 直接 get 的话 里面的汉字,在 pycharm 里显示都是乱码
selenium 的 webdriver get 这个文件,然后用 driver.page_source 获取返回的源码,汉字也是乱码,还会自动在这个 js 文件的前后内容加上<html><head><head><body></body></html>.
python 新手,请解惑。
1
DoraJDJ 2016-11-09 17:35:28 +08:00 via Android
文字编码问题。
|
2
Sylv 2016-11-09 18:13:04 +08:00
第一个文件是 utf-8 编码的,所以可以在 pycharm 里显示正常。
第二个文件是 gbk 编码的, pycharm 用 utf-8 编码去显示它就出现乱码了。 猜你用的应该是 Python 2 ,解决方法是先用 gbk 编码 decode('gbk') 成 unicode ,然后再用 utf-8 编码 encode('utf-8') 成 str 。 推荐使用 requests ,会自动判断编码,就不用自己再手动处理编码了。 |
4
dousao OP @Sylv 还真是。我下了文件 用 notepad++ 看格式 但是它说是 gb2312 的,于是 decode 在 encode 不行。 decode gbk 再 encode 就行了。
接着用了 requests ,反现返回的 text 就自动帮你搞定了编解码 可以直接显示了,高端。 我在其他帖子里看到你关于 python 编解码的回复,应该对于这块比较了解了,不如写个文章出来 普及一下哈。 |
5
Sylv 2016-11-09 20:14:24 +08:00
@dousao
正常网页的头部 headers 里是会声明编码的,例如这样: 'Content-Type': 'text/html; charset=UTF-8' 但是有的网站写得不规范会没声明编码,例如你的这个例子,这种情况就得靠猜了。 而中文出现乱码问题一般就只和 gbk 和 utf-8 这两个编码有关系,所以分别用这两个编码 decode 下字符串,哪个编码没报错,字符串就是哪个编码了。 另外还可以用 chardet 库来自动猜编码,像 Requests 库在不知道网页是什么编码时就是用 chardet 来猜编码。 |
9
podel 2020-07-11 10:43:02 +08:00
不要用 python2 已经被淘汰了。换 python3
|