def encoding(dm):
>>types = ['utf-8','utf-16','gb2312','gbk']
>>for type in types:
>>>>try:
>>>>>>return dm.decode(type),type
>>>>except:
>>>>>>pass
htmlstr = urllib.request.urlopen(htmlstr).read()
htmlstr,htmltype = encoding(htmlstr)
这是从网上找的代码,是先取到页面代码,然后用 encoding 判断代码的编码,是用试错法,从几个编码里挨个试,如果不能转换就换下一个,直到找到为止。我在执行完这一步就把页面代码存入数据库了,但是直接上传到自己的网站上时显示乱码,必须用 btstr = btstr.encode('gbk')转成 gbk 才能正确显示内容,我的网站是 utf-8 编码,系统是 xp , python34 , sublime3 ,数据库是 access ,步骤就是这样。
我现在奇怪的是上面代码中 return dm.decode(type),type 这句到底起什么作用?
如果对方网站是 utf-8 编码,那么 dm.decode('utf-8')是解码成 unicode ?
把这个网页代码存入数据库时是什么编码?
为什么上传的时候必须要编码成 gbk 才能显示呢?
>>types = ['utf-8','utf-16','gb2312','gbk']
>>for type in types:
>>>>try:
>>>>>>return dm.decode(type),type
>>>>except:
>>>>>>pass
htmlstr = urllib.request.urlopen(htmlstr).read()
htmlstr,htmltype = encoding(htmlstr)
这是从网上找的代码,是先取到页面代码,然后用 encoding 判断代码的编码,是用试错法,从几个编码里挨个试,如果不能转换就换下一个,直到找到为止。我在执行完这一步就把页面代码存入数据库了,但是直接上传到自己的网站上时显示乱码,必须用 btstr = btstr.encode('gbk')转成 gbk 才能正确显示内容,我的网站是 utf-8 编码,系统是 xp , python34 , sublime3 ,数据库是 access ,步骤就是这样。
我现在奇怪的是上面代码中 return dm.decode(type),type 这句到底起什么作用?
如果对方网站是 utf-8 编码,那么 dm.decode('utf-8')是解码成 unicode ?
把这个网页代码存入数据库时是什么编码?
为什么上传的时候必须要编码成 gbk 才能显示呢?