鱼C论坛

 找回密码
 立即注册
查看: 3448|回复: 10

新人求助!! python编码问题

[复制链接]
发表于 2015-8-4 22:13:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 mtfe123 于 2015-8-5 10:48 编辑

我今天学习了小甲鱼的爬虫教程,于是心血来潮想做一个借助第三方平台的聊天机器人,可是遇到编码问题。
代码如下:
QQ截图20150804221212.png
返回异常如下:
QQ截图20150804221456.png
求大神帮忙!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-8-5 07:36:06 | 显示全部楼层
将decode改为encode。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-5 09:03:57 | 显示全部楼层
s1986q 发表于 2015-8-5 07:36
将decode改为encode。

还是不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-5 09:04:47 | 显示全部楼层
如果你返回的数据中有中文的话那编码方式就是gb2312了,把decode('utf-8')改成gb2312试试。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-5 09:04:53 | 显示全部楼层
s1986q 发表于 2015-8-5 07:36
将decode改为encode。

异常信息
  1. Traceback (most recent call last):
  2.   File "C:\Documents and Settings\Administrator\桌面\爬虫学习Python Script\robot.py", line 9, in <module>
  3.     back=urllib.request.urlopen(url)
  4.   File "C:\Python34\lib\urllib\request.py", line 161, in urlopen
  5.     return opener.open(url, data, timeout)
  6.   File "C:\Python34\lib\urllib\request.py", line 463, in open
  7.     response = self._open(req, data)
  8.   File "C:\Python34\lib\urllib\request.py", line 481, in _open
  9.     '_open', req)
  10.   File "C:\Python34\lib\urllib\request.py", line 441, in _call_chain
  11.     result = func(*args)
  12.   File "C:\Python34\lib\urllib\request.py", line 1210, in http_open
  13.     return self.do_open(http.client.HTTPConnection, req)
  14.   File "C:\Python34\lib\urllib\request.py", line 1182, in do_open
  15.     h.request(req.get_method(), req.selector, req.data, headers)
  16.   File "C:\Python34\lib\http\client.py", line 1088, in request
  17.     self._send_request(method, url, body, headers)
  18.   File "C:\Python34\lib\http\client.py", line 1116, in _send_request
  19.     self.putrequest(method, url, **skips)
  20.   File "C:\Python34\lib\http\client.py", line 973, in putrequest
  21.     self._output(request.encode('ascii'))
  22. UnicodeEncodeError: 'ascii' codec can't encode character '\u6211' in position 59: ordinal not in range(128)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-5 09:10:02 | 显示全部楼层
Ricky24 发表于 2015-8-5 09:04
如果你返回的数据中有中文的话那编码方式就是gb2312了,把decode('utf-8')改成gb2312试试。

可是是urlopen那里出了问题 后面的代码不会执行的 所以返回数据是空的 不过还是谢谢你的热心回答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-5 14:46:25 | 显示全部楼层
本帖最后由 s1986q 于 2015-8-5 15:36 编辑
  1. import urllib,json
  2. ke=""
  3. #key自己加吧
  4. inf=""
  5. def getapost(url):
  6.     fd = urllib.urlopen(url)
  7.     da = fd.read()
  8.     fd.close()
  9.     return da
  10. while 1:
  11.     inf=raw_input("你:\r\n")
  12.     url="http://www.tuling123.com/openapi/api?key="+ke+"&info="+inf
  13.     content=getapost(url)
  14.     print content
  15.     mydict = json.loads(content)
  16.     print "机器人:",mydict.get("text").encode("utf8")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-5 15:25:57 | 显示全部楼层
所有的中文前面加u,如原来的'你好'改成u'你好'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-5 19:59:34 | 显示全部楼层

谢谢了 不过 我找到了一个更好的解决办法 urlib.parse(Python3.x)这个库下有一个函数quote可以解决
2015-08-05_200127.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-5 21:30:04 | 显示全部楼层
本身不用解码的,你为什么要解。json能读出。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-6 15:14:55 | 显示全部楼层
s1986q 发表于 2015-8-5 21:30
本身不用解码的,你为什么要解。json能读出。

可能是因为我用的是python3.4
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-17 02:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表