更正数据库中的文字?

时间:2011-03-04 13:00:41

标签: c# .net sql vb.net unicode

问题:

在我的一个数据库中,varchar-field中有一个值: 经纪人México,Intermediario de Aseguro,S.A。

现在我将一个新列设为nvarchar,并希望接管正确编码的旧值。

现在有两个问题:

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

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

1 个答案:

答案 0 :(得分:5)

你可能希望尝试这样的事情:

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开始,如果这不起作用,请看一些什么是错的例子和正确的版本。