对windows-1252和UTF-8编码之间的转换感到困惑

时间:2015-01-11 23:12:05

标签: utf-8 character-encoding windows-1252

我有一个声称将排序规则设置为windows-1252并将文本字段的内容存储为

的旧数据库

I’d

当它在旧版网络应用中显示时,它在浏览器中显示为I’d。浏览器报告UTF-8的页面编码。我无法弄清楚转换是如何完成的(几乎可以肯定它不是通过即时搜索和替换)。这对我来说是个问题,因为我从遗留数据库中获取文本字段(以及许多其他类似的字段)并进入新的UTF-8数据库。新的Web应用程序将新数据库中的文本显示为

I’d

我希望将其显示为I’d。我无法弄清楚遗留应用程序如何实现这一点(Ruby中的一些摆弄并没有向我展示影响将字符串I’d转换为I’d)的方法。

我把自己绑在了某处。

1 个答案:

答案 0 :(得分:1)

这可能意味着之前的开发人员搞砸了数据插入(或者你搞砸了某个地方)。场景如下:

  • 数据库连接设置为latin1
  • app实际上将UTF-8发送到数据库
  • 数据库将收到的数据解释为latin1,然后将其存储(解释为“)”
  • app再次查询数据
  • 数据库返回 - 以latin1
  • 编码
  • app将数据解释为UTF-8,从而产生'

你基本上需要做同样的错误解释才能获得好的数据。现在您可能正在通过utf8连接查询数据库,因此数据库返回 - 以UTF-8编码。您需要做的是通过latin1连接查询并将数据解释为UTF-8。

有关所有这些内容的详细说明,请参阅Handling Unicode Front To Back In A Web App