如何在Sqlite3中引用UTF-8字符串文字

如何在Sqlite3中引用UTF-8字符串文字,sqlite,unicode,utf-8,Sqlite,Unicode,Utf 8,我希望在Sqlite数据库中编码和存储Unicode。有没有办法在sql查询中对UTF-8(unicode)字符串文本进行原始编码 我正在寻找类似于java的东西,我可以将\u00E9转换成字符串,并自动将其上转换为Unicode。如果您将数据库配置为使用UTF-8(我相信这是许多安装的默认设置;一定要在模式创建时执行PRAGMA encoding=“UTF-8”),这应该不是问题 如果您向SQLite3发送一组UTF-8编码的字符,那么处理它应该没有问题 如果Java能够允许您“将\u0039

我希望在Sqlite数据库中编码和存储Unicode。有没有办法在sql查询中对UTF-8(unicode)字符串文本进行原始编码


我正在寻找类似于java的东西,我可以将\u00E9转换成字符串,并自动将其上转换为Unicode。

如果您将数据库配置为使用UTF-8(我相信这是许多安装的默认设置;一定要在模式创建时执行
PRAGMA encoding=“UTF-8”
),这应该不是问题

如果您向SQLite3发送一组UTF-8编码的字符,那么处理它应该没有问题


如果Java能够允许您“将\u0039转换为字符串”,我就使用它,并确保当您尝试将字符串放入数据库时,使用Java提供的任何机制将字符串转换为UTF-8字节编码。我不相信SQLite提供或需要为您提供此功能。

您使用的是什么语言?SQLite可以很好地处理Unicode,在宿主语言中创建文本就不那么明显了

$ sqlite3 junk.sqlite
SQLite version 3.6.22
sqlite> create table names (id integer primary key, name string);
sqlite> insert into names values (null, 
    'î℉ yõù gSQLite doesn't have escape sequences.  But your programming language probably does.

# in Python
db.execute("INSERT INTO MyTable(MyColumn) VALUES('\u00E9')")
$sqlite3 junk.sqlite
SQLite版本3.6.22
sqlite>创建表名(id整数主键,名称字符串);
sqlite>插入到名称值中(空,

'î℉ SQLite没有转义序列,但您的编程语言可能有

db.execute("INSERT INTO MyTable(MyColumn) VALUES(?)", ['\u00E9'])

如果出于某种原因,您必须在纯SQL中编写UTF-8文本,您可以执行以下操作:

INSERT INTO MyTable(MyColumn) VALUES(CHAR(233))
编辑:由于最初编写了此答案,SQLite中添加了一个函数。因此,现在您可以编写

    UPDATE  `tableToFix`  SET  `columnToFix` = json_extract('"'  ||  `columnToFix`  ||  '"', '$');
    INSERT INTO test VALUE (json_extract('"P\u0159\u00edli\u0161 \u017elu\u0165ou\u010dk\u00fd k\u016f\u0148 \u00fap\u011bl \u010f\u00e1belsk\u00e9 \u00f3dy."', '$'));

如果您的问题是重新解释sqlite中的转义序列,那么您可以(ab)使用json_extract例如


注意:引号处理。有效的json字符串以“所以在使用json_extract之前必须添加它们”

开始和结束。您是在Java中的自定义应用程序中还是在SQLite命令解释器中进行此操作?为什么要“将\u0039放入字符串中”?似乎编写“9”要简单得多。
    UPDATE  `tableToFix`  SET  `columnToFix` = json_extract('"'  ||  `columnToFix`  ||  '"', '$');
    INSERT INTO test VALUE (json_extract('"P\u0159\u00edli\u0161 \u017elu\u0165ou\u010dk\u00fd k\u016f\u0148 \u00fap\u011bl \u010f\u00e1belsk\u00e9 \u00f3dy."', '$'));