C# 从SQLite数据库读取非Unicode、非英语文本 我们有一个旧的MFC C++应用程序,它写入SQLite数据库和从数据库中读取的另一个C语言应用程序。 C++应用程序在俄文Windows计算机上写入“γ-π”(Cyric字符)损坏数据库。 当同一个C++应用程序在西欧(拉丁)Windows计算机上读取它时,它将其视为“Y-Yang-YixOrthixAyaAxy”(拉丁表示)。

C# 从SQLite数据库读取非Unicode、非英语文本 我们有一个旧的MFC C++应用程序,它写入SQLite数据库和从数据库中读取的另一个C语言应用程序。 C++应用程序在俄文Windows计算机上写入“γ-π”(Cyric字符)损坏数据库。 当同一个C++应用程序在西欧(拉丁)Windows计算机上读取它时,它将其视为“Y-Yang-YixOrthixAyaAxy”(拉丁表示)。,c#,sql,sqlite,unicode,encoding,C#,Sql,Sqlite,Unicode,Encoding,当C#应用程序读取它时,它将其读取为“��� ������ ����" (Unicode表示法) 这些应用程序都没有指定数据库中的编码类型。我想读取C#中的原始文本 在阅读文本时,我找不到指定编码类型的正确方法 我尝试过连接字符串,比如datasource=c:\mydb.db;Version=3;UTF8Encoding=True;,但到目前为止没有成功 我还试着从“��� ������ ����并转换成西里尔文,但失败了 有人知道如何从SQLite数据库读回原始俄语文本吗?SQLite C

当C#应用程序读取它时,它将其读取为“��� ������ ����" (Unicode表示法)

这些应用程序都没有指定数据库中的编码类型。我想读取C#中的原始文本

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

我尝试过连接字符串,比如
datasource=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应用程序,将所有字符串读取为BLUB,然后将它们从原始编码转换为UTF-8。(无论如何,您需要知道原始编码是什么。)

正如我所说,这是最后的选择。首先,你真的应该使用正确的编码。