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