C# 回滚错误的编码字符串

C# 回滚错误的编码字符串,c#,string,utf-8,streamreader,C#,String,Utf 8,Streamreader,我有一个非常严重的问题。我在数据库里有很多用波斯语写的记录。出于某些原因,我加载它们,通过HtmlAgilityPack对它们进行一些更改,然后将它们保存回数据库。但是所有的线都被转移到了?????????????符号。有没有办法让他们回来?以下是我的代码片段: private void SomeStartMethod(){ var str = ReadFromDb(); str = MakeChanges(str); SaveToDbAgain(str); } pri

我有一个非常严重的问题。我在数据库里有很多用波斯语写的记录。出于某些原因,我加载它们,通过HtmlAgilityPack对它们进行一些更改,然后将它们保存回数据库。但是所有的线都被转移到了?????????????符号。有没有办法让他们回来?以下是我的代码片段:

private void SomeStartMethod(){
    var str = ReadFromDb();
    str = MakeChanges(str);
    SaveToDbAgain(str);
}

private string MakeChanges(string contentHtml) {
    var reader = new StringReader(contentHtml);

    var doc = new HtmlDocument();
    doc.Load(reader);
    var nodes = doc.DocumentNode.SelectNodes("//a[@href]");
    if (nodes == null || !nodes.Any())
        return contentHtml;
    foreach (var link in nodes) {
        // do some stuffs here...
    }

    using (var memoryStream = new MemoryStream()) {
        doc.Save(memoryStream);
        memoryStream.Seek(0, SeekOrigin.Begin);
        var streamReader = new StreamReader(memoryStream /* here was my mistake, I forgot to put , Encoding.UTF8 here */);
        var result = streamReader.ReadToEnd();
        return result;
    }
}

否,字符已被替换为?当C/.NET无法正确加载它们时。如果可用,您需要从数据的另一个副本还原字符串。您说您的错误是在创建StreamReader对象时忘记指定Encoding.UTF8,但这似乎表明这应该是错误的:@RenniePet所以可能是我错了,我应该设置HtmlDocument编码?但是,我现在能做什么呢?你知道吗?对不起,不,但愿我知道。某些类型的数据库维护允许回滚的事务日志,但我假定您知道。@RenniePet::还原/事务日志菜单项不可用。我正在使用共享主机。