urllib获取网页内容遇到了乱码!import urllibprint urllib.urlopen(http://www.hack921.cn).read()汉字
urllib获取网页内容遇到了乱码!
import urllib
print urllib.urlopen('http://www.hack921.cn').read()
汉字部分出现了像“\xef\xbb\xbf ”这样的乱码;经过分析,该网页没有进行编码设定,urllib是把这个网页的编码当什么字符编码进行处理了呢?该如何把这种字符编码转换成汉字呢???
[最优解释]我在Linux上是没问题的。Windows可能没自动处理bom?要不你试下utf-8-sig:
import urllib
print urllib.urlopen('http://www.hack921.cn').read().decode('utf-8-sig')
[其他解释]原来那个几个自己是本身页面上带的,我试着存了一下:
import urllib
l= urllib.urlopen('http://www.hack921.cn')
f = codecs.open(r'C:\WORK\build\build.properties', 'wb')
f.writelines(l.read())
[其他解释]import urllib
print urllib.urlopen('http://www.hack921.cn').read().decode('utf-8')
[其他解释]Traceback (most recent call last):
File "C:\Users\gao\Desktop\Untitled 4.py", line 3, in <module>
print urllib.urlopen('http://www.hack921.cn').read().decode('utf-8')
UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff' in position 0: ordinal not in range(128)
不行的啊!
[其他解释]试下:
import urllib
print urllib.urlopen('http://www.hack921.cn').read().decode('gbk')
或者直接看看该网页自己声明的 编码
[其他解释]Traceback (most recent call last):
File "C:\Users\gao\Desktop\Untitled 4.py", line 2, in <module>
print urllib.urlopen('http://www.hack921.cn').read().decode('gbk')
UnicodeDecodeError: 'gbk' codec can't decode bytes in position 2-3: illegal multibyte sequence
不行的。他的网页编码未定义啊!
[其他解释]编码是u8-dos,使用utf8解码是对的,看看是哪出了问题。
[其他解释]import urllib
print urllib.urlopen('http://www.hack921.cn').read().decode('utf-8')
在windows xp python2.5下正常显示,我刚刚测试过
[其他解释]页面是utf8的,在window命令行下print需要转为gbk,使用gb18030是因为他相比gb2312支持更多的字符
import urllib
print urllib.urlopen('http://www.hack921.cn').read().decode('utf-8','ignore').encode('gb18030')
[其他解释]测试了下,6楼的应该没问题。
[其他解释]7楼的不行,我是VISTA机器,提示编码错误
6楼的在python shell下可以正常显示,但是在windows下的ide(gbk编码)就不行啊
[其他解释]import urllib
def mdcode( str ):
for c in ('utf-8', 'gbk', 'gb2312'):
try:
return str.decode(c).encode( 'utf-8' )
except:
pass
return 'unknown'
print mdcode(urllib.urlopen('http://www.hack921.cn').read())
[其他解释]
hao 支持一下
[其他解释]
"xef\xbb\xbf" 这个三个字节不是汉字的乱码,是UTF8的BOM字节
我觉得这个不是你取下来的东西,可能打印的时候出来的问题,你试着别把取到的数据打印出来,存到文件里去看看。
在Http的传输过程中,他可能是用压缩的方式进行传输的,你得指定一些Http的header才能达到目的。
以上为鄙人愚见。
[其他解释]
我来看6楼的
[其他解释]
看看六楼说的啥