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数据库读回原始的俄语文本?
SQLite C API中的所有常规功能都使用UTF-8。C#SQLite驱动程序会自动在UTF-8和C#字符串编码之间转换。
如果没有从C#程序中获取正确的数据,则C ++应用程序可能实际上不是UTF-8。C ++应用程序使用不同的代码页给出不同的结果这一事实证实了这一点。
如果可能,请修复C ++应用程序,或将数据库中的数据从原始编码转换为UTF-8。作为最后的选择,您可以更改C#应用程序以将所有字符串读取为blob,然后将其从原始编码转换为UTF-8。(无论如何,您都需要知道原始编码是什么。)