我在SQlite处理非欧洲文本的噩梦.我认为问题是SQlite没有在UTF8中编码文本.所以我想检查编码是什么,并希望将其更改为utf8.我用UTF8编码了一个CSV,只是将它导入SQlite,但非罗马文本是乱码.
我想知道:1)如何检查编码.2)如果不是utf8,如何更改编码.我一直在阅读Pragma编码,但我不知道如何使用它.
我使用OpenOffice 3创建了一个包含一半ENglish和一半日文文本的电子表格.接下来,我使用utf8将文件保存为CSV.这部分似乎没问题.我也尝试使用Google Docs来做到这一点并且工作正常.接下来我打开了SQlite Browser并进行了CSV导入.ENglish文本完美显示,但日文文本是乱码.我认为sqlite使用的是不同的编码(也许是utf16?).
Sam*_*eff 18
您可以使用此编译指示测试编码:
PRAGMA encoding;
Run Code Online (Sandbox Code Playgroud)
您无法更改现有数据库的编码.要使用特定编码创建新数据库,请打开与空白文件的SQLite连接,运行此编译指示:
PRAGMA encoding = "UTF-8";
Run Code Online (Sandbox Code Playgroud)
并随后创建数据库.
如果您有数据库并需要不同的编码,则需要使用新编码创建新数据库,然后重新创建模式并导入所有数据.
但是,如果你遇到乱码文本的问题,那么使用其中一个工具几乎总是一个问题,而不是SQLite本身.即使SQLite使用不同的编码,唯一的最终结果是它会导致一些额外的计算,因为SQLite会不断地从存储的编码转换为API请求的编码.如果您使用的不是C级API,那么您永远不应该关心编码 - 您使用的工具所使用的API将决定应该使用哪种编码.
许多SQLite工具都显示出将文本重写到SQLite中的问题,包括命令行shell.尝试从命令行运行SQLite并告诉它自己导入文件而不是通过SQLite浏览器.
| 归档时间: |
|
| 查看次数: |
21854 次 |
| 最近记录: |