小女 help!!!!!python sqlite 中文转码问题 棘手

xiixiixixi 2014-07-16 10:53:57
直入正题,
现在有个数据库里面的中文的编码都是gbk,当时用c结合sqlite写的,注明是好用的。
现在想用python自带的sqlite对这个数据库做些更新处理。遇到如下问题。
现状交代:
数据库是好用的。
中文编码是gbk
#-*- coding: cp936 -*- 已经标明
python3.3
把sqlite打包了一个类初始化的时候做了如下处理。
self.sql_conn.text_factory = lambda x: str(x,'gbk','ignore')
对于“select * from xxx"这类的语句是可以正确读取的。
但是现在有个问题是类似:"select * from xxx where col = '中国'"
这种需要限定条件的sql语句时,却查找不到(这条在数据库里是存在的)
应该是转码的问题
请问谁有过类似的经验分享一下如何做这样的查询。
还有怎么把gbk编码插入进数据库,
小女就95分了 谁要是解决我全部送给他+谢谢大恩大德。
由于自己也是才写python,不太会用,希望多指点,多喷,我都能接受。
...全文
308 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
isinstance 2016-04-12
  • 打赏
  • 举报
回复
引用 6 楼 xiixiixixi 的回复:
这个应该是个大众的问题,utf固然通用,但是在国内,很多著名的门户网站都用gbk,原因你也可以查查。谢谢帮助
你抓取数据后应该将其编码解码成utf8格式再存入数据库,第一步的数据清洗和规整化都没做好
xiixiixixi 2014-07-21
  • 打赏
  • 举报
回复
引用 8 楼 angel_su 的回复:
最好按1楼说的把数据库转成utf-8吧,勉强用就cast试试... excute("select * from xxx where cast(col as blob)=?", ("中国".encode('gbk'),))
select 好用了 谢谢,insert 怎么用呢,我想text类型插入gbk,插入之后显示应该是乱码才算正常。
xiixiixixi 2014-07-18
  • 打赏
  • 举报
回复
引用 8 楼 angel_su 的回复:
最好按1楼说的把数据库转成utf-8吧,勉强用就cast试试... excute("select * from xxx where cast(col as blob)=?", ("中国".encode('gbk'),))
我试试
xiixiixixi 2014-07-18
  • 打赏
  • 举报
回复
其实我只不过是用它写工具比较方便,utf当然省事,但是不是固定宽度确实很烦人
laoyaotask 2014-07-17
  • 打赏
  • 举报
回复
引用 1 楼 u013171165 的回复:
如果是我,我绝对不会用GBK编码,只会用UTF8,并且,表名,字段名,全部英文,永远不会出问题,就算以后跨平台移动数据库,也不会出问题,这是一劳永逸的解决方法。如果还是原来的需求,那就等下,估计会有人给你源码解决。
顶楼上。 不管用什么工具做开发,最好都统一用utf8编码,可以减少90%的乱码问题,这绝壁是真理! 因为lz已经在用Python3了,所以理论上文字编码问题应该已经很少见了。
  • 打赏
  • 举报
回复
相应的把查询条件也转码就可以了
zd96998 2014-07-17
  • 打赏
  • 举报
回复
.encode('gb2312','ignore')
The_Third_Wave 2014-07-17
  • 打赏
  • 举报
回复
如果是我,我绝对不会用GBK编码,只会用UTF8,并且,表名,字段名,全部英文,永远不会出问题,就算以后跨平台移动数据库,也不会出问题,这是一劳永逸的解决方法。如果还是原来的需求,那就等下,估计会有人给你源码解决。
angel_su 2014-07-17
  • 打赏
  • 举报
回复
最好按1楼说的把数据库转成utf-8吧,勉强用就cast试试... excute("select * from xxx where cast(col as blob)=?", ("中国".encode('gbk'),))
xiixiixixi 2014-07-17
  • 打赏
  • 举报
回复
引用 2 楼 zd96998 的回复:
.encode('gb2312','ignore')
转换之后是字节码,不是字符串
xiixiixixi 2014-07-17
  • 打赏
  • 举报
回复
这个应该是个大众的问题,utf固然通用,但是在国内,很多著名的门户网站都用gbk,原因你也可以查查。谢谢帮助
xiixiixixi 2014-07-17
  • 打赏
  • 举报
回复
引用 3 楼 xmnathan 的回复:
相应的把查询条件也转码就可以了
试过了 不好用的,原因很简单,字节码和str是分开的

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧