2011-02-17 70 views
0

我有一个字符串来自未知字符编码的旧数据库。我无法编码/筛选字符串以显示正确的文本。从未知字符编码中读取字符

什么数据看起来像在数据库:Marronnière谩世嘉锅
我们需要的字符串作为展现出来:Marronnièreà世嘉锅

具体来说,我无法解析字符串,所以我可以显示字符à(à

这是一个使用Sql Server 2005数据库在VB中编写的asp.Net 2.0站点。不知道它是否重要,但数据来自列排序:SQL_Latin1_General_CP1_CI_AS

我试过编码的字符串编码各种编码无济于事。我还将字符串(编码方式不同)转换为字节数组,以便为​​不好的字符找到唯一的字节模式,而不会成功。

任何想法或主角将不胜感激,谢谢。

回答

1

这听起来像在SQL Server数据库中的归类不匹配,这是实际使用:(这对粗心的开发者一个相当常见的错误的字符编码。

这就是为什么SQL Server管理工具都出现了怪异字符,而不是你期望的字符串。

可能是UTF-8?在UTF-8 Ã由字节0xC3 0xA8,这将在Windows代码页进行解释的Latin-1作为è代表。我知道没有任何关于SQL Server排序规则的信息,但似乎SQL_Latin1_CP1_CI_AS类似于Windows“Latin-1 ”。

您可能需要

  • 从数据库中读取时修复了编码。对于需要处理这个数据库和代码的下一个可怜的受害者来说,这是一个丑陋和困惑。
  • 或更好地更正数据库中的数据,使其与排序规则匹配。您可能希望将排序规则更改为UTF-8或UTF-16:您还需要更改数据。