对 windows-1252 和 UTF-8 编码之间的转换感到困惑
Confused about conversion between windows-1252 and UTF-8 encoding
我有一个遗留数据库,声称将排序规则设置为 windows-1252,并将文本字段的内容存储为
I’d
当它在旧版网络应用程序中显示时,它在浏览器中显示为 I’d
。浏览器报告页面编码为 UTF-8。我无法弄清楚该转换是如何完成的(几乎可以肯定它不是通过即时搜索和替换)。这对我来说是个问题,因为我正在将文本字段(以及许多其他类似的字段)从遗留数据库中提取到新的 UTF-8 数据库中。新的 Web 应用程序将新数据库中的文本显示为
I’d
我希望它显示为 I’d
。我无法弄清楚遗留应用程序是如何实现这一点的(Ruby 中的一些摆弄并没有向我展示影响将字符串 I’d
转换为 I’d
的方法)。
我在这里某处打了一个结。
这可能意味着之前的开发人员搞砸了数据插入(或者您在某处搞砸了)。场景是这样的:
- 数据库连接设置为
latin1
- app 实际发送 UTF-8 到数据库
- 数据库将收到的数据解释为
latin1
,并按原样存储(将 ’ 解释为 ’)
- 应用再次查询数据
- 数据库 returns 编码在
latin1
- app 将数据解释为 UTF-8,导致'
你基本上需要做同样的误解才能得到好的数据。现在您可能正在通过 utf8
连接查询数据库,因此数据库 returns 以 UTF-8 编码。您需要做的是通过 latin1
连接查询并将数据解释为 UTF-8。
有关所有这些的更详细说明,请参阅 Handling Unicode Front To Back In A Web App。
我有一个遗留数据库,声称将排序规则设置为 windows-1252,并将文本字段的内容存储为
I’d
当它在旧版网络应用程序中显示时,它在浏览器中显示为 I’d
。浏览器报告页面编码为 UTF-8。我无法弄清楚该转换是如何完成的(几乎可以肯定它不是通过即时搜索和替换)。这对我来说是个问题,因为我正在将文本字段(以及许多其他类似的字段)从遗留数据库中提取到新的 UTF-8 数据库中。新的 Web 应用程序将新数据库中的文本显示为
I’d
我希望它显示为 I’d
。我无法弄清楚遗留应用程序是如何实现这一点的(Ruby 中的一些摆弄并没有向我展示影响将字符串 I’d
转换为 I’d
的方法)。
我在这里某处打了一个结。
这可能意味着之前的开发人员搞砸了数据插入(或者您在某处搞砸了)。场景是这样的:
- 数据库连接设置为
latin1
- app 实际发送 UTF-8 到数据库
- 数据库将收到的数据解释为
latin1
,并按原样存储(将 ’ 解释为 ’) - 应用再次查询数据
- 数据库 returns 编码在
latin1
- app 将数据解释为 UTF-8,导致'
你基本上需要做同样的误解才能得到好的数据。现在您可能正在通过 utf8
连接查询数据库,因此数据库 returns 以 UTF-8 编码。您需要做的是通过 latin1
连接查询并将数据解释为 UTF-8。
有关所有这些的更详细说明,请参阅 Handling Unicode Front To Back In A Web App。