gpt4 book ai didi

mysql - MySQL 中奇怪的分隔十六进制 - 需要转换为 UTF8

转载 作者:可可西里 更新时间:2023-11-01 08:52:32 25 4
gpt4 key购买 nike

好的。所以我有一个大型的遗留数据库来支持一个高流量的网站。这些表是 latin1 编码的,我正在转换为 UTF-8。我们已经将网站转换为 Rails,我们开始直接访问数据库。然而,将 utf8 字符插入数据库似乎发​​生了一些非常奇怪的事情。我们正在使用 Tolk (https://github.com/dhh/tolk) 将站点转换为中文,不幸的是,站点是在将翻译表转换为 UTF-8 之前设置的。问题是我们将一种奇怪的字符格式插入到 latin1 表中用于 unicode 字符。

这是一个例子:

--- "xfire\xE7\x94\xA8\xE6\x88\xB7\xEF\xBC\x9F\xE8\xAF\xB7\xE7\x82\xB9\xE5\x87\xBB<a dialog-name='account_actions' href='#login' class='dialog_link login add_overlay'>Sign in</a>\xE7\xBC\x96\xE8\xBE\x91\xE4\xBD\xA0\xE7\x9A\x84\xE8\xB4\xA6\xE6\x88\xB7\xE4\xBF\xA1\xE6\x81\xAF"

数据被序列化为 YAML,Rails 或数据库似乎正在做一些事情来将 unicode 中文字符转换为这种反斜杠分隔的十六进制格式。

任何想法可能会发生什么?有没有办法将这些十六进制字符串翻译成相应的 utf-8 字符?

最佳答案

事实证明问题出在 YAML 上(参见 Rails: encoding woes with serialized hashes despite UTF8 )。

将这个添加到 environment.rb 完全解决了问题:

YAML::ENGINE.yamler= 'syck' if defined?(YAML::ENGINE)

关于mysql - MySQL 中奇怪的分隔十六进制 - 需要转换为 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com