作者yshihyu (yshihyu)
看板Python
标题Re: [问题] requests 捞回来的 big5 网页转成 utf8
时间Sun Oct 23 00:14:15 2016
https://gist.github.com/anonymous/1078f4e653de5f1f9c6e98166b750212
加上 r.encoding = r.apparent_encoding 编码确实就正常
python test.py 正常不会有乱码
但我想我内容导向ruten.html会出现错误
python test.py > ruten.html
UnicodeEncodeError: 'ascii' codec can't encode characters in position
207-210: ordinal not in range(128)
错误 google 一下是解释系统编码是 ascii 编码范围只有0~127
但我加上下面两行就可以成功导向 ruten.html
reload(sys)
sys.setdefaultencoding("utf-8")
好奇为什麽导向才会出现这问题? 而我程式里面 print r.text 却能正常输出内容在终端机上?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 175.180.117.142
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1477152861.A.CD6.html
1F:→ kenduest: 一般不用改程式码,若你用 linux 这 unix-based 系统 10/23 00:39
2F:→ kenduest: 用 bash 的话执行前 export PYTHONIOENCODING=utf-8 10/23 00:39
3F:→ kenduest: 执行一下设定环境变数就可以了 10/23 00:39
4F:→ kenduest: 至於那段语法可以解决主要是python2预设使用ascii编码 10/23 00:48
5F:→ kenduest: 透过那语法後会让内部处理都转换指定为utf8 10/23 00:49
6F:→ kenduest: python3 後续预设是走 unicode, 所以那段程式码将无法用 10/23 00:50