2015-01-11 44 views
0

我有声称已核对设定为窗口1252和被存储的文本字段的内容作为困惑窗口1252和UTF-8编码

I’d

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

I’d

的文字,我想它它显示为I’d。我无法弄清楚遗留应用程序是如何实现这一点的(Ruby中的一些小窍门并未向我展示如何影响将字符串I’d转换为I’d)。

我已经把自己绑在这里的某个地方。

+1

您的dbase包含垃圾。由忽略编码并使用utf8的程序插入。如果幸运的话,也可以通过一个忽略它的程序来阅读。通常不是运气。它适用于99%的权利。 –

回答

1

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

  • 数据库连接设置为latin1
  • 应用实际上发送UTF-8到数据库
  • 数据库解释已接收的数据作为latin1,并将其存储为例如(解释'作为’)
  • 再次
  • 数据库返回一个€™在latin1
  • 一个编码的数据应用查询pp将数据解释为UTF-8,导致'

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

请参阅Handling Unicode Front To Back In A Web App了解更多关于这一切的详细说明。

+0

是的,这是有道理的,谢谢@deceze。然后我想做一个转换。不想触摸旧数据库。 – Ben