如何使用UTF8执行SQLite脚本?

时间:2016-04-06 12:29:12

标签: powershell utf-8 sqlite

我正在尝试.read包含一些德语字符的SQLite脚本(umlaute äöüß):

sqlite>
.open test.db
.read test.sql

我已经将sql文件保存为没有BOM的utf8,因为sqlite3不会用BOM读取它并且仍然抱怨第1行错误,sqlite3似乎没有把它读作utf8,因为当我选择一行时只有ü我得到的是问号?。但是,如果我在控制台中添加ü并选择相同的行,则会显示正确的字符。

我也尝试过PowerShell:

Get-Content test.sql -encoding utf8 | .\sqlite3.exe test.db

但结果是一样的(问号)。

执行ut8 sql脚本需要做什么?

(我删除了每个测试的数据库)

1 个答案:

答案 0 :(得分:0)

事实证明,要通过powershell导入包含国家字符(如德语äöüß)的utf8编码文件,请使用此命令Running a Sqlite3 Script from Command Line

.\sqlite3 test.db ".read test.sql"

另一种流行的解决方案Redirecting a .sql file to .db file in Windows在这种情况下不起作用,结果是问号:

Get-Content test.sql -encoding utf8 | .\sqlite3.exe test.db

要查看结果,使用

更改控制台的编码也很重要
chcp 65001

或者除非文件已正确导入,否则您只会看到垃圾。

如果你正在使用C#,你仍然看不到正确的字符串,你需要重新编码:

value = Encoding.UTF8.GetString(Encoding.Default.GetBytes(value));