`

python用法:处理sqlite中的中文字符时遇到的问题

 
阅读更多

作为初学才,学起python,是挺快,但是也不免常常出些小错。在访问sqlite3的时候,我写了下边的测试代码。

文件test.py是utf-8编码的,OK,结果没问题。

#!/usr/bin/envpython
#
coding=utf-8

importsqlite3

#con=sqlite3.connect(r"sqlite.db")
con=sqlite3.connect(r"e: estsqlite3.db")
#con.text_factory=str
cur=con.cursor()
#cur.execute("insertintobasvslvoy(vslcode,voyage,vslename)values(?,?,?)",(u'tt',u'tt',u'tt'))
cur.execute("insertintot1values(?,?)",(10,u'中文测试gbk10'))
con.commit()
cur.execute(u
"select*fromt1wherecol2like'中%'")
forrowincur.fetchall():
printrow[0],row[1].encode('gbk')

con.close()

结果如下:

Processstarted>>>
10中文测试gbk10
10中文测试gbk10
5
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10<<<Processfinished.

可是,当我把文件编码调整成ansi格式的时候,上边程序没办法跑。
结果将文件内容改成下边的样子:

#!/usr/bin/envpython
#
coding=utf-8

importsqlite3

#con=sqlite3.connect(r"sqlite.db")
con=sqlite3.connect(r"e: estsqlite3.db")
#con.text_factory=str
cur=con.cursor()
#cur.execute("insertintobasvslvoy(vslcode,voyage,vslename)values(?,?,?)",(u'tt',u'tt',u'tt'))
cur.execute("insertintot1values(?,?)",(10,'中文测试gbk10'.decode('gbk')))
con.commit()
cur.execute(
"select*fromt1wherecol2like'"+''.decode('gbk')+"%'")
forrowincur.fetchall():
printrow[0],row[1].encode('gbk')


con.close()

这样,出现的结果跟上边一样。
问题的关键就是#coding=utf-8,同时文件编码也要是utf-8,才能让结果保持一致。
看看下边的简单例子就知道:

>>>a='中文'
>>>b=u'中文'
>>>a
'ÖÐÎÄ'
>>>b
u
'中文'
>>>a.decode('gbk')
u
'中文'
>>>b==a.decode('gbk')
True

如果将上边的例子放到一个.py文件当中,分别采用utf-8编码和ansi编码('cp936'),结果可能就是分别为True和False。


<script type="text/javascript"><!-- google_ad_client = "ca-pub-7104628658411459"; /* wide1 */ google_ad_slot = "8564482570"; google_ad_width = 728; google_ad_height = 90; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
分享到:
评论

相关推荐

    解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫全套教学资料

    3. 正则表达式:在Python中,`re`模块用于处理字符串匹配和查找,常用于从网页文本中提取特定模式的数据。 4. 数据存储:学会将抓取的数据存储到文件(如CSV、JSON)、数据库(如SQLite、MySQL)或其他格式,如...

    2014年辛星Python数据库Sqlite3教程

    在Python中使用SQLite3,开发者需要熟悉SQL语句的编写,以及如何通过Python代码来构建和执行这些语句。 ### 数据库基础概念 数据库本身是存储数据的仓库,数据在数据库中的组织形式多种多样,但逻辑结构较为简单,...

    SQLite3中文编码 Python的实现

    在Python中使用SQLite3数据库处理中文数据时,可能会遇到编码问题。SQLite3是Python标准库中的一个模块,它提供了一个轻量级的、自包含的、无服务器的SQL数据库引擎,方便在各种应用中存储数据。然而,由于中文字符...

    python 用sqlite3

    下面将详细介绍sqlite3模块的使用方法以及相关的知识点。 1. 安装与导入: Python的sqlite3模块通常在标准安装中就已经包含了,无需额外安装。在Python环境中,可以直接通过`import sqlite3`来引入这个模块。 2. ...

    python模块之sqlite数据库.pdf

    根据提供的文件内容,这里介绍的是Python编程语言中使用sqlite模块进行...以上知识点涵盖了Python中使用sqlite模块进行数据库操作的基本方法和常见操作,为开发者提供了利用Python对SQLite数据库进行操作的理论基础。

    Python实现读取TXT文件数据并存进内置数据库SQLite3的方法

    本文将详细介绍如何使用Python读取TXT文件中的数据,并将其存储到SQLite3数据库中,同时也会涉及数据库的基本操作,如创建表、插入数据以及查询数据。 首先,我们需要导入`sqlite3`模块,这是Python标准库的一部分...

    Python-sqlitesqlparser脚本能从sqlite3dump文件中导出兼容MySQL的SQL文件

    然而,MySQL和SQLite的SQL语法存在一些差异,因此直接将SQLite的`.dump`文件应用于MySQL可能会遇到问题。这就是`sqlite_sql_parser`脚本发挥作用的地方。 `sqlite_sql_parser`是一个Python项目,它的主要功能是解析...

    SQLite3封装通用类库

    在C#中封装SQLite3访问类库,可以简化与SQLite数据库的交互,使得开发者能更高效地处理数据存储和检索。 SQLite3在C#中的封装通常涉及到以下关键知识点: 1. **NuGet包安装**:在C#项目中,我们通常会使用NuGet包...

    传sqliteAPI文档

    这份“传sqliteAPI文档”应该详细阐述了这些功能的使用方法、示例代码以及可能遇到的问题和解决方案,对于初学者和有经验的开发者都是一份宝贵的资源。通过深入学习和实践,开发者可以轻松地在各种项目中集成SQLite...

    python模块之sqlite数据库

    ### Python模块之SQLite数据库知识点详解 ...通过以上介绍,我们不仅了解了SQLite的基本概念和使用方法,还掌握了在Python中使用SQLite进行数据库操作的具体步骤。这对于实际开发工作来说是非常有用的技能。

    SqliteDB.rar_python sqlite

    Python SQLite 是一个轻量级的数据库引擎,常用于在Python应用...通过这个小例子,你可以学习到如何创建、插入、查询和管理SQLite数据库中的数据,这对于任何使用Python处理数据的开发者来说都是一个非常实用的技能。

    在SQLite-Python中实现返回、查询中文字段的方法

    在SQLite-Python环境中,处理中文字段可能会遇到编码问题,因为SQLite数据库默认是以UTF-8编码存储数据,但在Python中操作时如果不进行适当的设置,可能会出现乱码或编码错误。本篇文章将详细介绍如何在SQLite-...

    python做数据库系统-python做一个图书管理系统,数据库:sqlite.pdf

    该代码是用Python实现的一个简单的图书管理系统,使用SQLite作为数据库。系统允许用户通过输入书名来查找书籍的ID(book_id),然后借用该书籍。在借用过程中,系统还会验证用户的账号是否存在。以下是对代码中涉及...

    自动办公-python 快速提取一串字符中的中文

    除了正则表达式,还可以使用Python的字符串方法和内建的`unicodedata`库来识别中文字符。例如,我们可以检查每个字符的类别,如果类别为"Letter, Han",则表明是中文字符: ```python import unicodedata def ...

    基于sqlite特殊字符转义的实现方法

    在SQL查询中,特殊字符有时候会导致解析错误或者不期望的结果,特别是在使用LIKE、ILIKE或通配符操作时。SQLite数据库作为一个轻量级的关系型数据库管理系统,也不例外。本篇文章主要探讨的是如何在SQLite中对特殊...

    xlrd_pythonsqlite_pythonexcel_

    本项目标题"xlrd_pythonsqlite_pythonexcel_"揭示了使用Python的两个关键库:`xlrd`用于读取Excel文件,`sqlite3`用于与SQLite数据库交互。以下是对这些知识点的详细说明: 1. **xlrd库**: - `xlrd`是Python的一...

    python 编程:从入门到实践 阅读计划-dean_有用的python阅读计划_

    5. **异常处理**:学习如何使用`try/except`块来处理程序运行时可能遇到的错误,以增强代码的健壮性。 6. **文件操作**:学会读写文件,理解文件对象,以及处理文本和二进制数据。 7. **函数式编程**:了解Python...

    SQLite学习手册_中文全本.zip_SQLITE 手册_sqlite

    11. **API使用**:对于编程人员,会详细说明如何在C、Python、Java、JavaScript等不同编程语言中使用SQLite的API。 12. **错误处理与调试**:介绍错误代码和消息,以及如何调试SQLite相关的问题。 13. **案例分析*...

    Python中的Sqlite.pdf

    ### Python中的SQLite3使用详解 #### 一、简介与安装 SQLite是一款轻量级的数据库管理系统,被广泛应用于各种场景,特别是在嵌入式系统中。它以文件的形式存储数据,无需独立的服务进程,并且提供了丰富的SQL功能...

Global site tag (gtag.js) - Google Analytics