我尝试运行一个包含UTF-8字符串的脚本(.read FILE
),我使用了pragma命令:
PRAGMA encoding="UTF-8";
但我得到了错误的字符。 如果我自己创建表并插入值,一切都正常。我应该怎么做才能正确运行脚本?
顺便说一句,我查阅了很多关于stackoverflow和其他资源以及阅读文档的问题/文章。我尝试了一些方法,例如在Windows cmd中使用chcp 65001
,然后在当前窗口中打开sqlite3
,但没有帮助。
PRAGMA encoding
设置不会改变您使用SQLite API的方式。现有数据库的编码无法更改。
不要使用它。
sqlite3.exe
命令行工具不能处理UTF-8字符。(除非在最新版本中)
不要使用它。sqlite3.exe
)来检查生成的数据库,则它将正常工作。你所需要做的是:
打开命令提示符并更改编码(chcp 65001
)
从当前Windows运行sqlite3.exe
更改编码(PRAGMA encoding="UTF-8";
)
创建正确的UTF-8脚本。
sqlite3
程序正在使用的编码(可能与控制台编码不同)以及数据库的编码(执行PRAGMA encoding;
进行检查)。我怀疑在被SQLite持久化之前,字符串已经混淆了。您还可以使用Python进行检查,它可以直接与SQLite数据库通信(使用sqlite3模块)。 - code_onkelchcp 65001
,然后更改了数据库编码PRAGMA encoding="UTF-8";
,接着使用Notepad++多次更改文件编码。但是没有任何效果。我只是将坏字符更改为另一个坏字符。在Firebird数据库中一切都正常。 - Keltar Helviettchcp
(通过Python验证)。 - code_onkel