`

sqlite3 jdbc、c接口、python接口处理中文时遇到的问题及其解决方法

 
阅读更多

sqlite(版本3),以下简称sqlite3,目前功能已经非常强大。目前支持的字符集,包括UTF-8, UTF-16,UTF-16le,UTF-16be。

可是在我们直接使用gbk编码的时候,很可能就会遇到问题。

因为目前,很多人会使用c/c++接口来访问sqlite3数据库,当然,也有人使用python接口来访问它。
1. 使用python时,要想正确的取到c++接口insert/update以后的数据,需要设定Connection的text_factory值为str,
意思是直接使用原来存储时的encoding形式。

con=sqlite3.connect(r"e:/t/testsqlite3.db")
con.text_factory=str

2. 使用sqlite jdbc访问的时候,如果想正确的取到c接口insert/update以后的数据,必须进行转码。
不过,转码时很奇怪,居然是用到:

String.getBytes("ISO_8859_1"), "GBK")

看来,c接口存储到sqlite3里边的数据,默认都是ISO_8859_1格式的,除非在insert/update以前,将其转换成utf-8再进行入库操作。

目前,sqlite jdbc以及python默认的存储方式是将字符串转换成utf-8串,再进行入库,非常标准。它们自己的upsert操作,然后取出数据,不会有任何问题。这个在我的前一篇短文里也有详细的描述。

分享到:
评论

相关推荐

    Sqlite3和管理工具

    9. **编程接口**:SQLite3提供了C语言的API,同时也支持多种编程语言的绑定,如Python的sqlite3模块、Java的SQLiteJDBC、PHP的PDO_SQLite扩展等,使得开发者能够方便地在各自的语言环境中与SQLite3进行交互。...

    sqlite3 驱动 for odbc

    4. 兼容性:通过ODBC驱动,SQLite3可以与各种支持ODBC的应用程序无缝集成,如Excel、Python(使用pyodbc库)、Java(使用JDBC-ODBC桥)等。 5. 性能优化:ODBC驱动程序通常会包含一些性能优化策略,比如缓存机制,...

    sqlite 支持中文模糊查询

    4. **API或驱动兼容性**:如果你通过编程语言与SQLite交互,确保所使用的API或驱动(如Python的sqlite3模块、Java的JDBC驱动等)也支持中文字符。 5. **查询优化**:虽然LIKE操作符方便,但其性能可能不如全文搜索...

    sqlite驱动 java数据库驱动 sqlite连接java sqlite sqlite.jar

    SQLite是一款轻量级的开源关系型数据库,它无需单独的服务器进程,可以直接嵌入到Java、C、Python等多语言的应用程序中。在Java中,我们通常使用SQLite JDBC驱动来与SQLite数据库进行交互,这就是"sqlite驱动 java...

    Sqlite3数据库支持库

    同时,它还有丰富的API和绑定,如Python的sqlite3模块,Java的SQLiteJDBC,JavaScript的sqlite3库等,方便在各种编程环境中使用。 9. 安全性:SQLite3提供加密选项,可以通过第三方扩展库如SQLite Encryption ...

    sqlite3源码

    此外,还有多种编程语言的绑定库,如Python的sqlite3模块,Java的SQLiteJDBC等。 9. **移动设备上的应用**: SQLite3是Android和iOS等移动平台的默认数据库,适用于本地数据存储,如应用设置、用户数据等。 10. *...

    SQLite资源包(win)

    在开发过程中,程序员可以利用SQLite的C语言API来直接操作数据库,或者使用各种编程语言的绑定库,如Python的sqlite3模块、Java的SQLiteJDBC等,这些绑定库提供了更方便的接口来访问SQLite。此外,SQLite还支持...

    sqlite3_sqlite3安装_sqlite_.zip

    例如,Python 有 sqlite3 模块,Java 有 SQLite JDBC 驱动,Node.js 有 sqlite3 库等。安装这些库通常通过各自的包管理工具完成,如 Python 的 pip,Java 的 Maven 或 Gradle,Node.js 的 npm。 在使用 SQLite3 时...

    SQLiteQuery.zip

    在实际开发中,除了这些基本工具,还可以借助各种编程语言的SQLite驱动或库(如Python的sqlite3模块,Java的SQLite JDBC驱动等)来集成SQLite,实现更强大的数据库操作和应用程序开发。总的来说,SQLite提供了一套...

    java调用python入门详解

    8. **实战经验**: 项目描述中提到开发者遇到并解决了所有坑,这表明项目覆盖了从基本的调用到错误处理、异常捕获等实际开发中可能遇到的问题。这是一份宝贵的实践经验,对于初学者来说具有很高的学习价值。 9. **...

    SQLite 简单Demo

    这个“SQLite简单Demo”可能是一个示例项目,旨在帮助CSDN论坛的用户理解和解决他们在使用SQLite时遇到的问题。在这个压缩包中,我们看到一个名为“Study”的文件,这可能是包含代码示例、教程或练习材料的文件夹。 ...

    sqlite使用类库.zip

    1. **API接口**:根据使用的编程语言,类库提供了相应的API接口,如Python的sqlite3模块,Java的SQLiteJDBC,或C++的SQLite3 API,了解并熟练使用这些接口是基础。 2. **连接管理**:创建数据库连接,执行SQL语句,...

    jdbcdao.zip_jdbc ttemplate_loose9l6_oracle_python_rockfps

    标题中的"jdbcdao.zip_jdbc ttemplate_loose9l6_oracle_python_rockfps"暗示了一个基于Python的数据库访问模块,它集成了JDBC(Java Database Connectivity)模板风格的查询功能,适用于SQLite、MySQL和Oracle数据库...

    SQLITE-ODBC,含x86和x64驱动

    例如,在编程时,你可以使用`pyodbc`(Python)、`JDBC`(Java)或者其他支持ODBC的语言,通过指定的数据源名称来建立连接,执行SQL查询和数据操作。 7. 在使用过程中,要注意的是,由于SQLite是文件数据库,所以它...

    The.Definitive.Guide.to.SQLite配套源码

    《SQLite完全指南》是一本深入解析SQLite数据库系统的权威著作,其配套源码提供了丰富的实践示例,涵盖了多种编程语言的接口实现,对于学习和理解SQLite的内部机制以及如何在不同编程环境中使用SQLite非常有帮助。...

    sqlite-shell-win32-x86-3081101

    许多编程语言都提供了SQLite的API和库,如Python的sqlite3模块、Java的SQLite JDBC驱动等,允许开发者方便地在代码中操作SQLite数据库。这使得SQLite成为跨平台开发和快速原型设计的得力助手。 总的来说,SQLite是...

    sqlcipher4 可设置sqlite数据库密码

    SQLCipher就是为了解决这个问题而诞生的,它在SQLite的基础上添加了加密层,使得数据库文件在磁盘上以及在网络传输过程中都处于加密状态。 SQLCipher4的使用主要包括以下步骤: 1. **安装和集成**:在Windows环境...

    sqlite数据库 安装程序

    - API集成:开发者可以通过SQLite的C语言API将数据库功能集成到应用程序中,也有许多编程语言提供了绑定,如Python的sqlite3模块、Java的SQLiteJDBC等。 - 工具支持:有许多第三方工具可以管理和可视化SQLite...

    sqlite代码下载

    1. 数据库连接:SQLite支持多种API接口,如SQL标准的C语言API、SQLite的原生C API,以及各种编程语言的绑定,如Python的sqlite3模块、Java的SQLiteJDBC等。 2. SQL语法:SQLite支持大部分标准SQL,但也有其特定的...

    sqlite-3.3.5

    在实际使用中,开发者通常会通过SQLite的C语言API与数据库进行交互,或者使用支持SQLite的开发框架(如Python的sqlite3库、Java的SQLite-JDBC驱动等)。通过这些接口,开发者可以进行数据库连接、创建表、执行SQL...

Global site tag (gtag.js) - Google Analytics