- 使用scrapy抓取百科的链接,抓到的都是经过encode的地址,试图将其decode并显示在控制台时,显示乱码
解决过程:
1. import urllib,试图使用urllib.unquote将其解码
import urllib
url = urllib.unquote(url.strip()) #url => "/fenlei/%E9%87%91%E8%9E%8D%E5%B8%82%E5%9C%BA"
print(url)
//显示 "'gbk' codec can't encode character u'\xe5' in position 8: illegal multibyte sequence"
//查阅资料,应该是windows控制台的编码是gbk导致
//于是各种尝试:
url = urllib.unquote(url.strip()).decode("utf-8") //不行
url = urllib.unquote(url.strip()).decode("gbk") //不行
//最终通过下边代码成功
url = urllib.unquote(str(url.strip())).decode("utf-8")
- 使用json模块处理中文,或者list等结构中含有中文,用json.dumps()转换为json存入到数据库中时,中文会自动转变为unicode,当取出来时,变成比如:
a = '\u7387\u4e0a\u5347\u3001\u571f\u5730\u653f\u7b56\u653e\u677e\u3001'
print a #"\u7387\u4e0a\u5347\u3001\u571f\u5730\u653f\u7b56\u653e\u677e\u3001"
//这是可以用a.decode("unicode_escape")将其转换为unicode
a = a.decode("unicode_escape") #a=u'\u7387\u4e0a\u5347\u3001\u571f\u5730\u653f\u7b56\u653e\u677e\u3001'
print a #率上升、土地政策放松、