gpt4 book ai didi

SQLite 将所有 unicode 字符转换为 ANSI

转载 作者:行者123 更新时间:2023-12-03 16:23:47 27 4
gpt4 key购买 nike

我对 sqlite 及其文本编码有一个小问题。我从 sqlite 处理 UTF-8 编码的文档中读取,或者我可以通过执行命令 PRAGMA encoding = "UTF-8";等等。
数据库需要存储波兰语文本。该数据库稍后将与 Qt 一起使用。我有一个带有两个命令的脚本:CREATE TABLE ... 和 INSERT INTO ... 该文件以 UTF-8 编码。
但是,当我使用命令行:sqlite3 myname.db < the_file.sql 时,我可以创建数据库和表,但所有波兰语特定字符(如 ą、ć、ź、Ż 等)都会自动转换为更简单的 ANSI 等效字符: a, c, z, Z 等等。我以为是命令行的问题。所以我下载了 SQLite Manager 2009,当我复制/粘贴整个脚本以在 SQLite Manager 中执行它时,我注意到效果是一样的。字符在复制/粘贴过程中自动转换。
SQLite 是否仅限于与 ANSI 字符一起使用?

最佳答案

如果您的设置有任何问题,那肯定不是 SQLite。

几个简单的测试:

Linux:

$ cat > test.sql <<EOF
DROP TABLE IF EXISTS t;
CREATE TABLE t (str varchar(20));
INSERT INTO t (str) VALUES ("ą, ć, ź, Ż");
SELECT * FROM t;
EOF

$ file test.sql
test.sql: UTF-8 Unicode text

$ sqlite3 test.db < test.sql
ą, ć, ź, Ż

所以,它按照医生的规定起作用。

视窗:

使用相同的 test.sql如上。如果您需要重新创建它,请复制并粘贴以下文本:
DROP TABLE IF EXISTS t;
CREATE TABLE t (str varchar(20));
INSERT INTO t (str) VALUES ("ą, ć, ź, Ż");
SELECT * FROM t;

进入 Notepad++ 并使用编码保存为文件 -> 无 BOM 的 UTF-8 编码 .
sqlite3 test.db < test.sql
─Е, ─З, ┼║, ┼╗

这听起来很糟糕。但是,这是有问题的 Windows 控制台!将输出保存到文件:
sqlite3 test.db < test.sql > out.txt

打开 out.txt在 Notepad++ 中 - 看起来很棒: ą, ć, ź, Ż
编辑 :它也适用于 Windows 控制台,如果您使用 chcp 65001 :
chcp 65001
sqlite3 test.db < test.sql
ą, ć, ź, Ż

QED。

关于SQLite 将所有 unicode 字符转换为 ANSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com