C# 修复由于编码问题导致的错误字符
最近,我们的系统出现了一个编码问题: 如果我们的数据库中有字符串“æ”,那么它在我们的网页上就会变成“Ô 现在这个问题已经解决了,但问题是现在我们的数据库中有很多“Ô字符:用户没有看到并验证这些字符预先填充的表单 我发现如果你读UTF8C3A6你会得到“æ”,如果你读ascii你会得到“Ô 这很奇怪,因为如果我执行C# 修复由于编码问题导致的错误字符,c#,sql,sql-server,encoding,utf-8,C#,Sql,Sql Server,Encoding,Utf 8,最近,我们的系统出现了一个编码问题: 如果我们的数据库中有字符串“æ”,那么它在我们的网页上就会变成“Ô 现在这个问题已经解决了,但问题是现在我们的数据库中有很多“Ô字符:用户没有看到并验证这些字符预先填充的表单 我发现如果你读UTF8C3A6你会得到“æ”,如果你读ascii你会得到“Ô 这很奇怪,因为如果我执行 "select convert(varbinary(40),N'æ'),convert(varbinary(40),'æ')" 我没有相同的结果 你知道我如何修复我的数据库
"select convert(varbinary(40),N'æ'),convert(varbinary(40),'æ')"
我没有相同的结果
你知道我如何修复我的数据库吗
据我所知,修复的唯一方法是使用替换:
Update Table
Set Column = Replace(Column, N'æ', N'æ')
在本例中,我假设该列现在是Unicode(即nvarchar或nchar)
如果你读ascii码,你会得到“Ô
ASCII仅为字节00-7F分配字符。然而,有几种“扩展ASCII”编码,其中C3 A6表示“Ã阿尔法”,包括流行的西欧编码ISO-8859-1和windows-1252,以及土耳其ISO-8859-9和windows-1254
要解决编码问题,只需执行以下操作:
我知道如何替换,这里我想处理每一个奇怪的角色:“ó”变成了“ó”。我想做一些能够处理每一件事情的事情(正如我在帖子中所说的,预期中的角色和糟糕的角色之间存在着逻辑联系,因此必须有一种回归的方式)。@remi bourgarel-这就是我的观点。除了通过一系列替换调用手动更正数据之外,没有其他银弹解决方案。您将无法获得1:1的匹配,因为在某些情况下,Unicode可能将您的文本编码为两个字符而不是一个字符。正如Thomas所说,这里没有银弹。。。你知道我是否可以用sql来做吗?