阅读非Unicode,从SQLite数据库

问题描述:

非英语文本我们有写入到一个SQLite数据库和C#应用程序从数据库中读取旧MFC C++应用程序。阅读非Unicode,从SQLite数据库

C++应用程序在俄语Windows计算机的数据库中写入“шагпотокаработы”(西里尔文字符)。

当同样的C++应用程序读取它西欧(拉丁)Windows电脑上,它把它读成“OAAïîòîêàðàáîòû”(拉丁文表示)。

当C#应用程序读取它时,它将其读为“Unicode”(Unicode表示形式)。

这些应用中的无specifiy在数据库中的编码类型。我想阅读C#中的原文。

我找不到阅读文本时指定的编码类型有道。

我已经尝试过连接字符串,如Data Source=c:\mydb.db;Version=3;UTF8Encoding=True;,但目前为止没有运气。

此外,我试图从“ ”获取字节数组并转换为西里尔文,但失败了。

有谁碰巧知道如何从SQLite数据库读取原来的俄文本回来?

所有SQLite的C API使用UTF-8的正常功能。 C#SQLite驱动程序会自动在UTF-8和C#字符串编码之间进行转换。

如果您没有从您的C#程序中获取正确的数据,那么C++应用程序可能实际上并未实际使用UTF-8。这一点由C++应用程序在不同代码页中给出不同结果的事实所证实。

如果可能,修复C++应用程序,或将数据库中的数据从原始编码转换为UTF-8。作为最后的手段,您可以更改C#应用程序以将所有字符串读为blob,然后将它们从原始编码转换为UTF-8。 (在任何情况下,你需要知道原来的编码是什么。)

+0

正如我所说的,这将是最后的手段。你应该首先使用正确的编码。 –