【发布时间】:2015-01-29 14:18:25
【问题描述】:
我有一个编码问题。我的 MongoDB 中有错误编码的文本。我数据库中文本的源文件以 ISO-8859-1 编码。现在,在我的数据库中查看它时,一些字符被破坏了(变成'�')。
目前,在从数据库中检索文本时,我尝试了以下代码。
var t = Collection.FindOne(Query.EQ("id", "2014121500892"));
string message = t["b203"].AsString;
Console.WriteLine(ChangeEncoding(message));
第一次尝试:
static string ChangeEncoding(string message)
{
System.Text.Encoding srcEnc = System.Text.Encoding.GetEncoding("ISO-8859-1");
System.Text.Encoding destEnc = System.Text.Encoding.GetEncoding("UTF-8");
byte[] bData = srcEnc.GetBytes(message);
byte[] bResult = System.Text.Encoding.Convert(srcEnc, destEnc, bData);
return destEnc.GetString(bResult);
}
第二次尝试:
static string ChangeEncoding(string message)
{
File.WriteAllText("text.txt", message, Encoding.GetEncoding("ISO-8859-1"));
return File.ReadAllText("text.txt");
}
数据库中的示例文本:
Box aus Pappe f�r A8-Lernk�rtchen
想要的结果:
我希望能够在控制台中将其打印为:
Box aus Pappe für A8-Lernkärtchen
【问题讨论】:
-
你在看什么?例如,如果您的 IDE 未设置为该编码,它将不知道如何显示该字符。字节明智它可能是正确的。
-
我刚刚尝试在控制台屏幕上查看。 Console.WriteLine(结果在这里);
-
@WylanOsorio 我将问题标题更新为更具体。我很遗憾地说你运气不好(见我的回答)
标签: c# unicode encoding mongodb-.net-driver