C# 更正数据库中的文本?

C# 更正数据库中的文本?,c#,.net,sql,vb.net,unicode,C#,.net,Sql,Vb.net,Unicode,问题: 在我的一个数据库中,varchar字段中有一个值: 经纪人Mé西科,S.A.Medimediario de Aseguro 现在我创建了一个新的列,名为nvarchar,并希望接管正确编码的旧值 现在有两个问题: A) 在C#/VB.NET中,在将M#©xico存储到unicode字段(假设我知道正确的源代码页)之前,如何将其更改回正确的值(“México”) B) 如果我不想手动执行,有没有办法找出代码页?(好吧,提问是免费的,但我想没有。)你可能想试试这样的东西: string

问题:

在我的一个数据库中,varchar字段中有一个值: 经纪人Mé西科,S.A.Medimediario de Aseguro

现在我创建了一个新的列,名为nvarchar,并希望接管正确编码的旧值

现在有两个问题:

A)
在C#/VB.NET中,在将M#©xico存储到unicode字段(假设我知道正确的源代码页)之前,如何将其更改回正确的值(“México”)

B)
如果我不想手动执行,有没有办法找出代码页?(好吧,提问是免费的,但我想没有。)

你可能想试试这样的东西:

string broken = "Brokers México, Intermediario de Aseguro,S.A."; // Get text from database
byte[] encoded = Encoding.GetEncoding(28591).GetBytes(broken);
string corrected = Encoding.UTF8.GetString(encoded);
这实际上取决于它是如何被插入的——这是假设某个东西已经使用了UTF-8字节,将它们解释为ISO-8859-1字符串,然后将该字符串插入到数据库中。基本上,代码以相反的方式执行相同的转换

我不确定是否要弄清楚代码页-我首先会猜测ISO-8859-1和UTF-8,如果这不起作用,请查看一些错误示例和正确版本。

您可能想尝试以下内容:

string broken = "Brokers México, Intermediario de Aseguro,S.A."; // Get text from database
byte[] encoded = Encoding.GetEncoding(28591).GetBytes(broken);
string corrected = Encoding.UTF8.GetString(encoded);
这实际上取决于它是如何被插入的——这是假设某个东西已经使用了UTF-8字节,将它们解释为ISO-8859-1字符串,然后将该字符串插入到数据库中。基本上,代码以相反的方式执行相同的转换

我不确定是否能弄清楚代码页-我首先会猜测ISO-8859-1和UTF-8,如果这不起作用,请查看一些错误示例和正确版本