检查 SQlite 中文本的编码

发布于 2024-10-09 12:25:52 字数 396 浏览 1 评论 0原文

我在处理 SQlite 中的非欧洲文本时遇到了一场噩梦。我认为问题是 SQlite 没有以 UTF8 编码文本。所以我想检查编码是什么,希望将其更改为utf8。我用 UTF8 编码了 CSV,然后将其导入到 SQlite,但非罗马文本是乱码。

我想知道: 1)如何检查编码。 2)如果不是utf8如何更改编码。我一直在阅读有关 Pragma 编码的内容,但我不确定如何使用它。

我使用 OpenOffice 3 创建了一个电子表格,其中一半是英文,一半是日文文本。接下来,我使用 utf8 将文件保存为 CSV。这部分似乎还可以。我还尝试使用 Google Docs 进行此操作,效果很好。接下来我打开 SQlite 浏览器并进行 CSV 导入。英文文本显示完美,但日文文本显示乱码。我认为 sqlite 使用不同的编码(也许是 utf16?)。

I'm having a nightmare dealing with non Eurpean texts in SQlite. I think the problem is that SQlite isn't encoding the text in UTF8. So I want to check what the encoding is, and hopefully change it to utf8. I encoded a CSV in UTF8 and simply imported it to SQlite but the non-roman text is garbled.

I would like to know:
1)how to check the encoding.
2)How to change the encoding if it is not utf8. I've been reading about Pragma encoding, but I'm not sure how to use this.

I used OpenOffice 3 to create a spreadsheet with half ENglish and half Japanese text. Next I saved the file as a CSV using utf8. This part seems to be ok. I also tried to do it using Google Docs and it worked fine. Next I opened SQlite Browser and did CSV import. The ENglish text shows up perfectly, but the Japanese text is garbled symbols. I think sqlite is using a dfferent encoding (perhaps utf16?).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2024-10-16 12:25:52

您可以使用此编译指示测试编码:

PRAGMA encoding; 

无法更改现有数据库的编码。要使用特定编码创建新数据库,请打开与空白文件的 SQLite 连接,运行此编译指示:

PRAGMA encoding = "UTF-8"; 

然后然后创建数据库

如果您有一个数据库并且需要不同的编码,那么您需要使用新编码创建一个新数据库,然后重新创建架构并导入所有数据。

然而,如果您遇到乱码文本问题,那么几乎总是所使用的工具之一有问题,而不是 SQLite 本身的问题。即使 SQLite 使用不同的编码,唯一的最终结果是,当 SQLite 不断从存储的编码转换为 API 请求的编码时,它会导致一些额外的计算。如果您使用的是 C 级 API 以外的任何内容,那么您永远不应该关心编码——您正在使用的工具使用的 API 将决定应该使用什么编码。

许多 SQLite 工具都显示出将文本修改为 SQLite 之外的问题,包括命令行 shell。尝试从命令行运行 SQLite 并告诉它自行导入文件,而不是通过 SQLite 浏览器。

You can test the encoding with this pragma:

PRAGMA encoding; 

You cannot change the encoding for an existing database. To create a new database with a specific encoding, open a SQLite connection to a blank file, run this pragma:

PRAGMA encoding = "UTF-8"; 

And then create your database.

If you have a database and need a different encoding, then you need to create a new database with the new encoding, and then recreate the schema and import all the data.

However, if you have a problem with garbled text it's pretty much always a problem with one of the tools being used, not SQLite itself. Even if SQLite is using a different encoding depending, the only end result is that it will cause some extra computation as SQLite converts from stored encoding to API-requested encoding constantly. If you're using anything other than the C-level API's, then you should never care about encoding--the API's used by the tool you're using will dictate what encoding should be used.

Many SQLite tools have shown issues mangling text into our out of SQLite, including command line shells. Try running SQLite from a command line and tell it to import the file itself instead of going through SQLite Browser.

时间你老了 2024-10-16 12:25:52

我也遇到过类似的问题。我使用SQLiteStudio访问数据库并导出数据。 SQLiteStudio 无法正确处理 UTF8 特殊字符,但是 SQLite 数据库本身包含正确的 UTF8 字符。我最终用 C# 编写了一个代码片段来连接到数据库、运行查询并导出数据。这种方法效果很好。

I also experienced a similar issue. I used SQLiteStudio to access the database and export data. SQLiteStudio does not handle UTF8 special characters correctly, however, the SQLite database itself contains the correct UTF8 characters. I ended up writing a code snippet in C# to connect to the database, run my query, and export the data. This approach worked fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文