由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - python处理gb2312的问题
相关主题
浏览器的故事 (转载)streaming怎么保证data integrity?
Python 自动登录问题go 怎么 disable这个
请教一个query CGI 的问题有自信能写出单机1M/s tcp req/response可以扔个简历过来
问个Python问题问一个奇怪的tomcat+svg问题 (转载)
请问哪里有python的code examplelinux的二进制兼容性这么差,影响易用性啊
HTTP Error 403Why Google Chrome is so fast?
怎么写个程序实现自动登录然后下载文件[合集] 为啥显示的是页面源码? (转载)
别扯没用的,有人用过Spark Streaming吗?Silverlight是Java的竞争对手吗?
相关话题的讨论汇总
话题: import话题: opener话题: gb2312话题: cj话题: url
进入Programming版参与讨论
1 (共1页)
s******u
发帖数: 247
1
比如这个mitbbs的网页,我怎么print都是乱码呢?
谁给指点一下?谢谢。代码如下:
import os
import sys
import urllib2
import cookielib
import codecs
url= 'http://www.mitbbs.com/article_t/Programming/31237353.html'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# add a fake UA
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (compatible; MSIE 9
.0; Windows NT 6.1; Trident/5.0)')]
urllib2.install_opener(opener)
request = urllib2.Request(url)
response = opener.open(request).read()

print response.decode('utf-8').encode('gb2312')
l********a
发帖数: 1154
2
最后直接print response没有乱码啊
s******u
发帖数: 247
3
I use spyder.It printed corrupted characters.
What compiler do you use?
Thanks.
c*****m
发帖数: 1160
4

连我这个python新手都能看出来你用的是python2。我猜更新到最新的python 版本就能
解决了。

【在 s******u 的大作中提到】
: 比如这个mitbbs的网页,我怎么print都是乱码呢?
: 谁给指点一下?谢谢。代码如下:
: import os
: import sys
: import urllib2
: import cookielib
: import codecs
: url= 'http://www.mitbbs.com/article_t/Programming/31237353.html'
: cj = cookielib.CookieJar()
: opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

z*******h
发帖数: 346
5
import os
import sys
import urllib2
import cookielib
import codecs
url= 'http://www.mitbbs.com/bbsdoc/Programming.html'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# add a fake UA
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (compatible; MSIE 9.0;
Windows NT 6.1; Trident/5.0)')]
urllib2.install_opener(opener)
request = urllib2.Request(url)
response = opener.open(request).read()
print unicode(response, encoding = 'gb18030')
works on iTerm on Mac.

【在 s******u 的大作中提到】
: 比如这个mitbbs的网页,我怎么print都是乱码呢?
: 谁给指点一下?谢谢。代码如下:
: import os
: import sys
: import urllib2
: import cookielib
: import codecs
: url= 'http://www.mitbbs.com/article_t/Programming/31237353.html'
: cj = cookielib.CookieJar()
: opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

p***o
发帖数: 1252
6

mit是用gb2312编码的,你拿utf-8解码可不都是乱码么 ...
改成 print response.decode('gb2312').encode('utf-8') 再说

【在 s******u 的大作中提到】
: 比如这个mitbbs的网页,我怎么print都是乱码呢?
: 谁给指点一下?谢谢。代码如下:
: import os
: import sys
: import urllib2
: import cookielib
: import codecs
: url= 'http://www.mitbbs.com/article_t/Programming/31237353.html'
: cj = cookielib.CookieJar()
: opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

p***o
发帖数: 1252
7
python2要连这都干不了还是别混了。

【在 c*****m 的大作中提到】
:
: 连我这个python新手都能看出来你用的是python2。我猜更新到最新的python 版本就能
: 解决了。

d********g
发帖数: 10550
8
确实新手,鉴定完毕

【在 c*****m 的大作中提到】
:
: 连我这个python新手都能看出来你用的是python2。我猜更新到最新的python 版本就能
: 解决了。

s******u
发帖数: 247
9
谢谢大家的回帖。可是都不解决问题。
c*****m
发帖数: 1160
10

在这里的都是程序员。设身处地地想想:如果你做了一个软件,然后发现了bug,然后
你出了新版本修复了这个bug和其他bugs。现在别人不断地问你旧版本上面的bug怎样才
能绕过去,你烦不烦?你说,用新版本就可以了,可是还是有那么多人一定要用有bug
的旧版本,还不断问问题,你说讨厌不讨厌?
XP+IE6上面很多漏洞,人家微软都出了3个版本了(vista/win7/win8, IE7/8/9/10),
还有那么多人用旧版本,还要经常骂微软的软件漏洞多,我都替微软着急。

【在 d********g 的大作中提到】
: 确实新手,鉴定完毕
s******u
发帖数: 247
11
很多东西用旧的,是因为旧的兼容性好啊。等我在新的版本上运行一下试试。
l********a
发帖数: 1154
12

python就直接IDLE啦,自带的,好使.

【在 s******u 的大作中提到】
: I use spyder.It printed corrupted characters.
: What compiler do you use?
: Thanks.

c*****m
发帖数: 1160
13

用 python3,程序修改成:
import os
import sys
import urllib
import http.cookiejar
import codecs
url= 'http://www.mitbbs.com/article/Programming/31238113_0.html'
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
# add a fake UA
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (compatible; MSIE 9.0;
Windows NT 6.1; Trident/5.0)')]
urllib.request.install_opener(opener)
request = urllib.request.Request(url)
response = opener.open(request).read()

print(response.decode("gb2312"))
其实就是最后一行,是你需要修改的。其它改动都是针对 py2=>py3 的。
执行后python shell上面直接看见中文。

【在 s******u 的大作中提到】
: 很多东西用旧的,是因为旧的兼容性好啊。等我在新的版本上运行一下试试。
1 (共1页)
进入Programming版参与讨论
相关主题
Silverlight是Java的竞争对手吗?请问哪里有python的code example
RUSTHTTP Error 403
据说QT被NOKIA 裁掉了怎么写个程序实现自动登录然后下载文件
大家伙讨论讨论为什么firefox火了?别扯没用的,有人用过Spark Streaming吗?
浏览器的故事 (转载)streaming怎么保证data integrity?
Python 自动登录问题go 怎么 disable这个
请教一个query CGI 的问题有自信能写出单机1M/s tcp req/response可以扔个简历过来
问个Python问题问一个奇怪的tomcat+svg问题 (转载)
相关话题的讨论汇总
话题: import话题: opener话题: gb2312话题: cj话题: url