![]() | 1 felix021 2013-08-15 20:44:53 +08:00 ![]() print res.read().decode('utf-8').encode('cp936') |
3 timonwong 2013-08-15 21:19:49 +08:00 @itfanr 无输出,两种可能 1. read() 不能读两次 2. 这个网页包含了一些稀有字符,因此要 print res.read().decode('utf-8').encode('gb18030') |
![]() | 4 ling0322 2013-08-15 21:22:27 +08:00 1. 去看看print res.read().decode('gbk') 2. 这个response网页是不是被gzip压缩过 |
![]() | 5 cute 2013-08-15 21:25:02 +08:00 import sys import urllib2 url = 'http://mlook.mobi/book/info/6248' res = urllib2.urlopen(url) s = res.read() print s.decode('utf8').encode(sys.stdout.encoding) |
![]() | 6 ccdjh 2013-08-15 21:33:45 +08:00 这个么? import sys default_encoding = 'utf-8' if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding) |
![]() | 9 zippera OP |
10 cj1324 2013-08-15 22:16:57 +08:00 你们都没有试用编码识别工具的习惯吗? |
![]() | 11 manoon 2013-08-15 22:26:18 +08:00 先wget掉。 然后在本地读取HTML来测试。 |
12 nulloo 2013-08-15 22:28:31 +08:00 cygwin没怎么用过,反正我尽量不用win的终端输出中文,宁可用ide或者ssh,重定向py的输出到文件,用编辑器看看编码对不,再就是检查环境变量 |
![]() | 13 zippera OP |
![]() | 14 manoon 2013-08-15 22:44:06 +08:00 @zippera 为什么要urlretrieve呢?(我只知道抓图片用这个。。) 我的意思是,你直接用 url = 'http://mlook.mobi/book/info/6248' res = urllib2.urlopen(url) con=res.read() fhtml=open("con.html","w+") print >>fhtml,s 试试看。 |
15 mengzhuo 2013-08-15 22:53:28 +08:00 python开发必须设置系统级的编码utf8啊 ------------- 查询次数: 6 次,查询用时:70.36 ms 这是php? |
16 pandada8 2013-08-15 22:57:19 +08:00 via Android 先在本地看看编码,decode时候可以加个 error=“ignore"(直觉告诉我似乎我有拼写错误……参阅官方文档) |
![]() | 17 VYSE 2013-08-15 23:03:56 +08:00 export LANG=en_US.UTF-8 中文系统上cmd里这样写肯定不是乱码: print res.read().decode('utf-8') 那就是CYGWIN输出编码的问题,不信你可以cat一个utf-8的html文件 |
![]() | 18 zippera OP |
![]() | 19 powerfj 2013-08-16 18:42:25 +08:00 请用linux.. |
![]() | 21 infinte 2013-08-16 23:32:17 +08:00 Python2 在控制台输出用的似乎是 WriteConsoleA/WriteConsoleOutputA 不支持 unicode 的 所以死了这条心,换 py3 吧 |
![]() | 22 jinfan1009 2013-08-17 15:21:29 +08:00 不是py3就能解决这样的问题哦,其实你这是读取网站的源文件,要看网站本来采用的是什么编码,不过所有的编码都可以解码程unicode,这样就是一致的! |
![]() | 24 zippera OP @jinfan1009 这个网页本身是utf8的,程序本身也没问题,问题出在了print,出在了终端和系统。用Linux正常。 |
![]() | 27 infinte 2013-08-17 18:32:14 +08:00 |