gpt4 book ai didi

ruby-on-rails - 奇怪的字符编码问题

转载 作者:行者123 更新时间:2023-11-29 13:05:58 24 4
gpt4 key购买 nike

我有一些数据已导入到 Postgres 中,用于 Rails 应用程序。然而不知何故,外国口音变得奇怪地编码:

  • ä 显示为 â§
  • á 显示为 â°
  • é 显示为 â©
  • ó 显示为 ââ¥

我很确定问题在于数据的完整性,而不是 Rails 的任何问题。它似乎与我尝试的任何编码都不匹配:

# Replace "cp1252" with any other encoding, to no effect
"Trollâ§ttan".encode("cp1252").force_encoding("UTF-8") #-> junk

如果有人能够确定我遇到的是哪种编码混淆,那就太好了。

作为最后的手段,我可​​能不得不手动替换每个损坏的重音字符,但如果有人可以提出一个程序化的解决方案(或者甚至是解决这个问题的起点 - 我发现很难调试),我将不胜感激。

最佳答案

最近版本的 PostgreSQL 几乎不可能在 UTF8 数据库中包含无效的 UTF8。不过,还有其他似是而非的可能性可能导致该输出。

é 显示为 © 的典型情况下,要么:

  1. 数据库的内容是有效的,但是某些客户端层将数据库中的字节解释为好像它们是 iso-latin-something 而它们是 UTF8。

  2. 内容有效且 SQL 客户端层有效,但您查看此内容的终端/软件/网页配置为 iso-latin1 或类似的单字节编码 (win1252 , iso-latin9...).

  3. 数据库的内容包含使用有效 UTF8 编码的错误字符。如果你使用 iso-latin-something 字节,将它们转换为 UTF8 表示形式,然后将生成的字节流当作仍然是 iso-latin 格式的字节流,然后再次将其重新转换为 UTF8,然后插入进入数据库。

请注意,虽然 © 序列在 UTF8 与 iso-latin 混淆中是典型的,但在所有示例字符串中出现额外的 â 并不常见。这可能是在主要误解之上另一种误解的结果。如果您属于第 3 种情况,这可能意味着基于搜索替换的自动修复将比已经很棘手的正常情况更难。

关于ruby-on-rails - 奇怪的字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356076/

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