SQLite将所有unicode字符转换为ANSI
发布时间:2020-12-12 18:54:19 所属栏目:百科 来源:网络整理
导读:我的sqlite及其文本编码有点问题.我从文档中读到sqlite处理UTF-8编码,或者我可以通过执行命令PRAGMA encoding =“UTF-8”来使用它;等等 数据库需要存储波兰语文本.该数据库将在稍后与Qt一起使用.我有一个包含两个命令的脚本:CREATE TABLE …和INSERT INTO
我的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; 进入记事本并使用编码保存为文件 – >在没有BOM的情况下以UTF-8编码. sqlite3 test.db < test.sql ─Е,─З,┼║,┼╗ 这听起来很糟糕.但是,这是有缺陷的Windows控制台!将输出保存到文件: sqlite3 test.db < test.sql > out.txt 在记事本中打开out.txt – 看起来很棒:?,? 编辑:如果您使用chcp 65001,它也适用于Windows控制台: chcp 65001 sqlite3 test.db < test.sql ?,? QED. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |