# -*- 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中插入中文的更多相关文章

  1. MySQL无法插入中文的解决方案

    本人在做数据库的连接过程中,发现无法插入中文值.原因是mysql的默认编码是latin1,只须将编码改为utf8即可. 在mysql的命令行窗口中输入 status 会出现当前的编码.在mysql的安 ...

  2. PL/SQL客户端中执行insert语句,插入中文乱码

    问题描述:在PL/SQL客户端中执行insert语句,插入中文乱码 解决方案: 1.执行脚本 select userenv('language') from dual;    结果为AMERICAN_ ...

  3. 在MySQL向表中插入中文时,出现:incorrect string value 错误

    在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8.      一.修改数据库的默认字符集   ...

  4. mysql命令框中向表中插入中文字符,在可视化工具MySQL Workbeach或phpMyAdmin中不显示或显示乱码的问题解决

     一.问题导出 在刚刚开始学习MySQL数据库应用与开发这门课程的时候,老师建议我们使用可视化工具MySQL Workbeach进行数据库的相关管理,但是小编在mysql命令框使用insert命令向表 ...

  5. 处理Python2.7读写文件中的中文乱码问题

    1.设置默认编码 在Python代码中的任何地方出现中文,编译时都会报错,这时可以在代码的首行添加相应说明,明确utf-8编码格式,可以解决一般情况下的中文报错.当然,编程中遇到具体问题还需具体分析啦 ...

  6. PLSQL往表中插入中文乱码解决办法

    1.查看服务器端编码:select userenv('language') from dual; 2.查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到 ...

  7. 数据库 - SQLite3 中的数据类型

    ------------------------------ 安装 Sqlite3 和 数据库查看工具: sudo apt-get install sqlite3 sudo apt-get insta ...

  8. python django中使用sqlite3数据库 存储二进制数据ByteArray

    在python中使用sqlite3数据库存储二进制流数据ByteArray,在django使用sqlite3数据库时,有时候也要注意最好使用二进制流ByteArray插入字符串. 使用ByteArra ...

  9. MFC中使用sqlite3操作数据库

    需要用到的文件有sqlite3.h .sqlite3.dll.sqlite3.lib.网上很多人分享下载地址这里不再赘述. 将这三个文件拷贝到自己新建MFC项目目录下,在解决方案窗口下 添加现有项,选 ...

随机推荐

  1. 读取web.config和app.config配置文件

    app.config:       <add key="Password" value="123456"/> C#:   string TQpwd ...

  2. 一.hadoop入门须知

    目录: 1.hadoop入门须知 2.hadoop环境搭建 3.hadoop mapreduce之WordCount例子 4.idea本地调试hadoop程序 5.hadoop 从mysql中读取数据 ...

  3. thinkphp错误提示:系统发生错误

    下载最新版本3.1.3,定义了一个应用,进入应用的config.php,在里面添加数据库类链接信息,在控制器里面M()一个表,访问控制器方法提示:系统发生错误.如果使用连接字符串DSN方式,调用M() ...

  4. Lemur编写索引器

    http://blog.sciencenet.cn/blog-273829-312138.html http://sourceforge.net/p/lemur/wiki/Home/ http://q ...

  5. Mysql 模糊匹配(字符串str中是否包含子字符串substr)

    1.LIKE 通常与 % 一同使用,类似于一个元字符的搜索.若substr不在str中,则返回0. 2.INSTR(str,substr) 返回字符串 str 中子字符串的第一次出现位置.若subst ...

  6. BZOJ1067 [SCOI2007]降雨量 线段树

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1067 题意概括 给定n组整数对(Xi,Yi),当Xi<Xj且Yi>=Yj时,如果对于任 ...

  7. 【转】TCP三次握手和四次挥手全过程及为什么要三次握手解答

    TCP三次握手和四次挥手的全过程   TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种表示: SYN(synchronous建立连接) ...

  8. Linux /etc/profile文件详解

    Linux /etc/profile文件详解   转载地址:http://linux.chinaitlab.com/administer/820910.html linux /etc/profile文 ...

  9. ISO9000和CMM

    ISO9000和CMM,谁更适合软件开发? ISO9000 和 CMM 是国际上通用的软件质量评估和管理方法.二者有很多相似之处,它们的实施都可以改变软件开发的不规范.文档不齐.维护跟不上.质量漏洞多 ...

  10. flask源码剖析

    这段时间想重新写个自己的博客系统,又正好在看一些框架源码,然后就想要不顺便写个小框架吧,既然想写框架,要不再顺便写个orm吧,再写个小的异步Server吧..事实证明饭要一口一口吃 先梳理一下flas ...