从SQLite数据库读取非Unicode,非英语文本

Cha*_*thJ 2 c# sql sqlite unicode encoding

我们有一个旧的MFC c ++应用程序,它可以写入SQLite数据库,而另一个C#应用程序可以从数据库中读取。

C ++应用程序写“ ??? ?????? ??????” 俄语Windows计算机中数据库中的(西里尔字符)。

当同一C ++应用程序在西欧(拉丁)Windows计算机上读取该文件时,它将读为“øàãïîîîêêààðàáîòî”(拉丁表示)。

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

这些应用程序均未在数据库中指定编码类型。我想用C#阅读原始文本。

阅读文本时,我找不到指定编码类型的正确方法。

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

我也试图从“ ?????????????”获得字节数组。并转换为西里尔字母,但失败了。

有没有人知道如何从SQLite数据库读回原始的俄语文本?

CL.*_*CL. 5

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

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

如果可能,请修复C ++应用程序,或将数据库中的数据从原始编码转换为UTF-8。作为最后的选择,您可以更改C#应用程序以将所有字符串读取为blob,然后将其从原始编码转换为UTF-8。(无论如何,您都需要知道原始编码是什么。)