【数据库】SQLite3 中文存储
在SQLite3中存储中文字符时,可能会遇到编码问题。SQLite3默认使用UTF-8编码,如果数据库、表或列的编码设置不正确,可能会导致中文字符存储或读取异常。
以下是一个简单的Python示例,演示如何使用SQLite3来存储和读取中文字符:
import sqlite3
# 连接到数据库(如果不存在则创建)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 创建表格,确保使用UTF-8编码
cursor.execute('CREATE TABLE IF NOT EXISTS chinese_text (id INTEGER PRIMARY KEY, text TEXT COLLATE NOCASE);')
# 插入中文数据
cursor.execute('INSERT INTO chinese_text (text) VALUES (?)', ('你好,世界',))
# 提交事务
conn.commit()
# 查询数据
cursor.execute('SELECT * FROM chinese_text;')
rows = cursor.fetchall()
for row in rows:
print(row)
# 关闭连接
conn.close()
确保:
- 数据库文件是以UTF-8编码保存的。
- 数据库连接使用UTF-8编码。
- 表和列的字符编码没有被改变。
如果你在存储或读取中文时遇到问题,请检查你的环境设置,确保它们支持UTF-8编码。如果你的环境默认使用其他编码,你可能需要在数据库连接时指定正确的编码,例如:
conn = sqlite3.connect('example.db', detect_types=sqlite3.PARSE_DECLTYPES, check_same_thread=False)
conn.text_factory = str
在这个例子中,detect_types
参数让SQLite3自动检测数据类型,check_same_thread
参数允许从多个线程访问连接,text_factory
参数设置为 str
以确保文本数据以UTF-8编码处理。
评论已关闭