设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

Python 实战(7):连连看

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

11#
发表于 2016-8-15 14:43:37 |只看该作者
yinxuexia1204 发表于 2016-8-15 10:14
我直接给一个变量赋值"张国荣",然后带入sql语句查询,是可以正常显示的,但是通过网页点击张国荣,就查 ...

应该是你代码里的编码和网页获取的编码不一样
你把网页获取的值 print 出来看
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

62

积分

注册会员

Rank: 2

12#
发表于 2016-8-15 14:53:28 |只看该作者
yinxuexia1204 发表于 2016-8-15 10:14
我直接给一个变量赋值"张国荣",然后带入sql语句查询,是可以正常显示的,但是通过网页点击张国荣,就查 ...

打印的时候就会提示:'gbk' codec can't encode character '\xe5' in position 0: illegal multibyte sequence
也尝试把浏览器设置为utf-8,不过还是这样
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

13#
发表于 2016-8-16 14:48:23 |只看该作者
yinxuexia1204 发表于 2016-8-15 14:53
打印的时候就会提示:'gbk' codec can't encode character '\xe5' in position 0: illegal multibyte seq ...

print content.encode('utf8')
系统默认用gbk解码,所以会报错
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

62

积分

注册会员

Rank: 2

14#
发表于 2016-8-16 15:49:18 |只看该作者
crossin先生 发表于 2016-8-16 14:48
print content.encode('utf8')
系统默认用gbk解码,所以会报错

转换后,还进行了str(),然后打印出b'\xc3\xa5\xc2\xbc\xc2\xa0\xc3\xa5\xc2\x9b\xc2\xbd\xc3\xa8\xc2\x8d\xc2\xa3'
带入sql中查询是没结果的,实际点击的是张国荣,查询应该有结果
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

15#
发表于 2016-8-17 11:12:06 |只看该作者
yinxuexia1204 发表于 2016-8-16 15:49
转换后,还进行了str(),然后打印出b'\xc3\xa5\xc2\xbc\xc2\xa0\xc3\xa5\xc2\x9b\xc2\xbd\xc3\xa8\xc2\x8d ...

要转成正确编码的字符才能查到结果,现在这个b'...'肯定是不行的。但我现在不可能模拟你的环境,也不清楚每一步拿到的变量的数据类型,所以你要自己调试。
建议尝试:content.decode('gbk').encode('utf8')
可以去下一个chardet的库帮助确定编码,同时结合 type() 查看数据类型,然后做正确的转换。数据库应该是utf8的,所以应该最后要转成 utf8 的字符
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

82

积分

注册会员

Rank: 2

16#
发表于 2017-2-8 00:07:27 |只看该作者
我也碰到这个问题,点击演员名字的超链接出来的页面没有电影信息,空的。但是点击导演名字的超链接却是正常的。检查了代码,完全一致的,不知问题出在哪里......
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

17#
发表于 2017-2-8 15:15:42 |只看该作者
shmxz1989 发表于 2017-2-8 00:07
我也碰到这个问题,点击演员名字的超链接出来的页面没有电影信息,空的。但是点击导演名字的超链接却是正常 ...

如果你是python3的话。
通常如我上面所说,是编码不一致导致无法找到匹配的字符。
你可以先试试纯英文的数据是不是正常。

如果确认是中文问题,就要用我上面说的转换编码,保证编码一致再去数据库里查。

不过你现在导演正常,演员不正常,倒是有一点奇怪
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

82

积分

注册会员

Rank: 2

18#
发表于 2017-2-8 21:03:42 |只看该作者
crossin先生 发表于 2017-2-8 15:15
如果你是python3的话。
通常如我上面所说,是编码不一致导致无法找到匹配的字符。
你可以先试试纯英文的 ...

感谢C大,我用的python2.7(目前还在windows下)。
已发现错误所在,不在于编码,是个低级错误(掩面),昨天夜里一定是太困了,郁闷了那么久竟然没发现,哈哈哈~
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

19#
发表于 2017-2-9 14:18:06 |只看该作者
shmxz1989 发表于 2017-2-8 21:03
感谢C大,我用的python2.7(目前还在windows下)。
已发现错误所在,不在于编码,是个低级错误(掩面), ...

一般很诡异无法理解的错误,最后发现往往都是一些低级原因
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

26

积分

新手上路

Rank: 1

20#
发表于 2018-3-21 09:29:46 |只看该作者
shmxz1989 发表于 2017-2-8 21:03
感谢C大,我用的python2.7(目前还在windows下)。
已发现错误所在,不在于编码,是个低级错误(掩面), ...

啥错误啊,我也碰到这错误,演员能出来,但导演页面404错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 18:57 , Processed in 0.016171 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部