0

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

I’d

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

I’d

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

我在这里某个地方打了个结。

4

1 回答 1

1

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

  • 数据库连接设置为latin1
  • 应用程序实际上将 UTF-8 发送到数据库
  • 数据库将接收到的数据解释为latin1,并按原样存储(解释为 ')
  • 应用再次查询数据
  • 数据库返回 ’ 编码在latin1
  • 应用程序将数据解释为 UTF-8,导致 '</li>

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

有关这一切的更详细说明,请参阅在 Web 应用程序中从前到后处理 Unicode 。

于 2015-01-11T23:25:37.510 回答