1
KyL 2015-03-08 19:13:58 +08:00
虽然症状不像,但是希望你能从 http://v2ex.com/t/163786 得到有用的信息
|
2
Battle 2015-03-08 20:00:34 +08:00
我当初也遇过这个编码问题,我也不懂原因在哪里,不过问题解决了,因为看了一篇博客,然后照着博主的方法敲了一遍,希望对你有帮助,也希望有知道原因的人告诉我一下,附上博客链接:
http://blog.csdn.net/u012150179/article/details/32911511 |
3
binux 2015-03-08 20:07:52 +08:00
上代码,我觉得不是你说的那个问题。
|
4
JoeShu 2015-03-08 20:42:10 +08:00
mysql默认编码不是utf8,是Latin1。
|
5
ljcarsenal OP @binux @JoeShu
我是用django模型建立的数据表结构(因为后续还要有把数据全部存入excel里的奇葩需求,这里基本上用的都是字符串,包括日期),看了下 默认生成的的确为Latin1编码 <script src="https://gist.github.com/lijunchengbeyond/ab410191ffa5e2164c31.js"></script> 运行爬虫 用下面这句替代 content = unicode(p.text_content().strip('\n')).encode('latin1'), 请求的是 http://www.imdb.com/title/tt2397535/reviews?start=0 得到的错误信息为 Warning: Incorrect string value: '\x97every...' for column 'content' at row 1,搜这个网页上的every,结果 有7个,应该第三个人评论的那篇文章,前面有个特殊的破折号 —every。 在数据库里无法保存。 爬取其他页面类似,会有类似 é 等这种符号无法保存。 问题是有没有办法解决,使其能保存在数据库里? |
6
mindcat 2015-03-09 12:22:20 +08:00
这里有一只猫猫,猫猫什么都不知道 /w\
猫猫建议你试试`r.encoding = "utf-8"`喵~ |
7
binux 2015-03-09 14:14:49 +08:00
`content = p.text_content().decode("Windows-1252")`
在内存中,只使用 unicode 。只在数据边界上进行遍解码。 没有看到『存到mysql数据库里面』啊 |
8
ljcarsenal OP @binux 那个gist文件的 65-77行,用的 Django 的orm ,存在时更新,不存在时创建
|
9
yepinf 2015-05-14 12:00:08 +08:00
iso-8859-1这个编码,使用urllib2来获取网页,可以正确解码
昨晚刚解决,不知道为什么:D |