python2中在sqlite3中插入中文
# -*- coding: utf-8 -*-
import sqlite3 conn = sqlite3.connect('SWC_Perf_Info.db')
cur = conn.cursor() test_sql1 = "INSERT INTO test (name) VALUES ('我爱中国')" #gbk编码,存入数据库的时候显示的是乱码
cur.execute(test_sql1)
conn.commit()
cursor = cur.execute("SELECT name from test")
for row in cursor:
print(row[0]) #因为读取的是GBK编码内容,所以可以直接显示

test_sql2 = "INSERT INTO test (name) VALUES ('我爱中国')".decode('GBK') #unicode编码
cur.execute(test_sql2)
conn.commit()

cursor = cur.execute("SELECT name from test")
for row in cursor:
print(row[0].decode('utf-8')) #即使用的是Unicode写入的数据库,内部还是使用的UTF-8编码存入,所以需要使用UTF-8解码
print(row[0].decode('utf-8').encode('GBK')) #输出的时候可以使用Unicode输出也可以使用本地的GBK输出

test_sql3 = test_sql2.encode('utf-8') #utf-8编码
cur.execute(test_sql3)
conn.commit()

cursor = cur.execute("SELECT name from test")
for row in cursor:
print(row[0].decode('utf-8'))
print(row[0].decode('utf-8').encode('GBK'))

select_sql1 = "SELECT name from test where name = '我爱中国'" #以GBK格式查询
cursor = cur.execute(select_sql1)
for row in cursor:
print(row[0].decode('utf-8'))
print(row[0].decode('utf-8').encode('GBK'))
#查询不到结果
6
select_sql2 = "SELECT name from test where name = '我爱中国'".decode('GBK') #以Unicode格式查询
cursor = cur.execute(select_sql2)
for row in cursor:
print(row[0].decode('utf-8'))
print(row[0].decode('utf-8').encode('GBK'))
select_sql3 = "SELECT name from test where name = '我爱中国'".decode('GBK').encode('utf-8') #以utf-8格式查询
cursor = cur.execute(select_sql3)
for row in cursor:
print(row[0].decode('utf-8'))
print(row[0].decode('utf-8').encode('GBK'))

总结下来写入的时候可以使用Unicode或者UTF-8编码的字符写入数据库
读取输出的时候使用UTF-8编码或者GBK编码的字符输出
查询的语句也必须是Unicode或者utf-8格式才能查询到结果
UTF-8是可以支持直接的读取或者输出理想编码格式
python2中在sqlite3中插入中文的更多相关文章
- MySQL无法插入中文的解决方案
本人在做数据库的连接过程中,发现无法插入中文值.原因是mysql的默认编码是latin1,只须将编码改为utf8即可. 在mysql的命令行窗口中输入 status 会出现当前的编码.在mysql的安 ...
- PL/SQL客户端中执行insert语句,插入中文乱码
问题描述:在PL/SQL客户端中执行insert语句,插入中文乱码 解决方案: 1.执行脚本 select userenv('language') from dual; 结果为AMERICAN_ ...
- 在MySQL向表中插入中文时,出现:incorrect string value 错误
在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8. 一.修改数据库的默认字符集 ...
- mysql命令框中向表中插入中文字符,在可视化工具MySQL Workbeach或phpMyAdmin中不显示或显示乱码的问题解决
一.问题导出 在刚刚开始学习MySQL数据库应用与开发这门课程的时候,老师建议我们使用可视化工具MySQL Workbeach进行数据库的相关管理,但是小编在mysql命令框使用insert命令向表 ...
- 处理Python2.7读写文件中的中文乱码问题
1.设置默认编码 在Python代码中的任何地方出现中文,编译时都会报错,这时可以在代码的首行添加相应说明,明确utf-8编码格式,可以解决一般情况下的中文报错.当然,编程中遇到具体问题还需具体分析啦 ...
- PLSQL往表中插入中文乱码解决办法
1.查看服务器端编码:select userenv('language') from dual; 2.查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到 ...
- 数据库 - SQLite3 中的数据类型
------------------------------ 安装 Sqlite3 和 数据库查看工具: sudo apt-get install sqlite3 sudo apt-get insta ...
- python django中使用sqlite3数据库 存储二进制数据ByteArray
在python中使用sqlite3数据库存储二进制流数据ByteArray,在django使用sqlite3数据库时,有时候也要注意最好使用二进制流ByteArray插入字符串. 使用ByteArra ...
- MFC中使用sqlite3操作数据库
需要用到的文件有sqlite3.h .sqlite3.dll.sqlite3.lib.网上很多人分享下载地址这里不再赘述. 将这三个文件拷贝到自己新建MFC项目目录下,在解决方案窗口下 添加现有项,选 ...
随机推荐
- CenOS常用命令
reset 作用:清屏 cd Change the shell working dirctory 切换工作目录 用法 输入cd+“空格”+“/”+“目录” 示例:cd /home 切换到home目录 ...
- LINQ学习之旅 C#3.0新特性(一)
一:C#3.0新语言的特性 自动属性(Auto-Implemented Properties) 隐含类型局部变量(Local Variable Type Inference) 匿名类型(Anonymo ...
- Word Highlight设置详解
- AOJ 0189 Convenient Location (Floyd)
题意: 求某一个办公室 到其他所有办公室的 总距离最短 办公室数 不超过10 输入:多组输入,每组第一行为n (1 ≤ n ≤ 45),接下来n行是 (x, y, d),x到y的距离是d输出:办公室 ...
- 【转载】和 Thrift 的一场美丽邂逅
http://www.cnblogs.com/cyfonly/p/6059374.html 一. 与 Thrift 的初识 也许大多数人接触 Thrift 是从序列化开始的.每次搜索 “java序列化 ...
- 【BZOJ】3123: [Sdoi2013]森林
题解 ------------------ 我莫不是一个智障吧 我把testdata的编号 当成数据组数读进来 我简直有毒 以为哪里写错了自闭了好久 实际上这题很简单,只要愉悦地开个启发式合并,然后每 ...
- Codeforces 915F Imbalance Value of a Tree
Imbalance Value of a Tree 感觉这种题没啥营养, 排个序算算贡献就好啦. #include<bits/stdc++.h> #define LL long long ...
- 073 HBASE的读写以及client API
一:读写思想 1.系统表 hbase:namespace 存储hbase中所有的namespace的信息 hbase:meta rowkey:hbase中所有表的region的名称 column:re ...
- 'utf-8' codec can't decode byte 0xc8 in position 0
今天学习python中使用jieba库,遇到了错误:“UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: i ...
- HDU - 1392 凸包求周长(模板题)【Andrew】
<题目链接> 题目大意: 给出一些点,让你求出将这些点全部围住需要的多长的绳子. Andrew算法 #include<iostream> #include<cstdio& ...


