回滚错误的编码字符串

时间:2014-09-02 01:16:41

标签: c# string utf-8 streamreader

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

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;
    }
}

0 个答案:

没有答案