新手问题 编码问题,完全匹配,都是 UTF-8,就是放不到数据库里

wdrsam · 2015年10月28日 · 最后由 flowerwrong 回复于 2015年10月29日 · 2200 次阅读

抓取的文章和标题,网站的编码写的是 gb2312,实际用的应该是 gbk 编码。因为我用 mechanize 爬的时候编码写 gbk 什么都抓不到,用 gbk 就可以了。 然后抓下来后的数据,

我打印出来的 encoding 是 utf-8

数据库也用的 utf-8

存进去,语法什么的没有任何错误。

报错

encode!("a","b") a 和 b 我试了无数种组合, utf-8 utf-8 utf-8 gbk utf-8 gb2312 报错报错报错。不玩了,再弄不不写 rails 辞职了我!

更新 ruby 到 2.0 以上版本

目测是表情的原因,mysql utf8 不支持,改成 utf8mb4.

#2 楼 @flowerwrong 那需要把原来的文本转码一次吗?文本的 encoding 是 utf-8。对那个文本对象一用 encode! 就报错。都用怕了。。

#4 楼 @wdrsam 目测不用,因为没乱码。

#5 楼 @flowerwrong 但我记得我是试过把数据库里的 title 和 content 字段改为 utf-8mb4,就在 utf-8 下面那个吧....依然报错..明天再去公司试试,唉。

\xe3\x80\x80 是个空格符号(所谓的 “全角” 空格中得一个),其 code point 为 U+3000,位于 BMP 中。所以我觉得多半是你的程序写得有问题,你可以把你涉及到此问题的代码精炼一下发上来。

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;

reference

需要 登录 后方可回复, 如果你还没有账号请 注册新账号