【问题标题】:How to execute SQLite script with UTF8?如何使用 UTF8 执行 SQLite 脚本?
【发布时间】:2016-04-08 17:45:07
【问题描述】:

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

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脚本需要做什么?

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

【问题讨论】:

  • 如果文件没有BOM并且Sqlite不会读取文件with BOM,这里有什么问题?你能澄清一下问题的那部分是什么意思吗?
  • @LasseV.Karlsen 我已经改写了这句话:我已经将 sql 文件保存为没有 BOM 的 utf8,因为 sqlite3 不会使用 BOM 读取它并抱怨第 1 行有错误.
  • 问题是它读取垃圾文件就像文件没有用utf8编码一样。
  • 当我按照此评论的建议更改控制台的代码页时,我能够导入文件:stackoverflow.com/questions/20269224/… 我也尝试为 powershell 更改它,但它在那里不起作用:(跨度>
  • 这个解决方案终于为我工作了stackoverflow.com/a/21759264/235671这很棘手

标签: powershell utf-8 sqlite


【解决方案1】:

事实证明,要通过 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));

【讨论】:

    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多