python与sqlite处理中文字符时出现的编码错误问题解决
来源:互联网 发布:淘宝金币怎么兑话费 编辑:程序博客网 时间:2024/05/22 03:38
python编码如果把中文数据存储至sqlite数据库某一字段中,再通过查询语句取出并进行相关的字符串操作时,经常会出现错误提示,类似于UnicodeDecodeError,提示某一类型编码不能转换。
出现这个问题的原因是因为python默认使用unicode处理sqlite3的TEXT类型(varchar类型也是如此,因为在sqlite中varchar其实就是TEXT)。python把中文存入数据库时使用了类似于GBK这样的编码,取出时会尝试把TEXT类型数据转换成unicode,从而出现错误。
由此导致的另一个不容易发现的错误是存储在数据库中的中文进行了base64之类的编码,在python中取出时不会存在错误,但是再进行base64解码,并与sqlite3中取出的其它text字段进行字符串拼接等处理,就出现编码转换错误,很难发现问题原因,可以把其它text字段进行如'aaa'.encode('gbk')编码成GBK码解决,但不提倡这种方法,更好方法如下:
解决方法是python连接sqlite数据库后进行如下设置:
conn = sqlite3.connection(“……”)
conn.text_factory = str
另外为了python代码中硬编码的中文字符串不出现问题,除了在源码开始添加
# -*- coding:utf-8 -*-
还要设置python源码的编码为utf-8
import sys
reload(sys)
sys.setdefaultencode('utf8')
- python与sqlite处理中文字符时出现的编码错误问题解决
- python xml处理中文时出现的错误
- 浅谈字符编码方式与python的中文编码(一)
- python用法:处理sqlite中的中文字符时遇到的问题
- Python的中文编码处理
- Python中与字符编码方式有关的一个错误
- python 处理中文遇到的编码问题总结 以及 字符str的编码如何判断
- python的编码处理和中文编码
- python中的编码以及解码问题(中文字符处理以及文件处理的某些注意事项)
- python 中文编码处理与文件读写
- 详解python中文编码与处理
- Python 编码转换与中文处理
- Python 编码转换与中文处理
- 浅谈字符编码方式与python的中文编码(二)
- python 字符编码处理
- CXF出现编码 GBK 的不可映射字符问题解决
- Python出现编码错误
- python字符编码错误的解决方案
- 【网络编程】httpClient抓取网页--linux C/C++
- Ubuntu 编译Webkit --gtk
- 我现在对这些各种游戏都失望了为了游戏已经很累了
- 生产订单组件修改记录
- Spectral Clustering
- python与sqlite处理中文字符时出现的编码错误问题解决
- android.app.Fragment$InstantiationException 解决办法
- 方形缓存区
- 移动/home 分区到其它分区
- java防SQL注入,HTML 特殊字符,JavaScript 特殊字符,SQL 特殊字符 处理
- SRM 603
- 在Ubuntu下编译WebKit源码--qt
- Sql Server系统DNS设置 数据源(ODBC) 一种sql server数据库连接方法
- 自爆神舟电脑为什么便宜,明眼人可以看懂。