Ruby 如何处理诸如“quot&引用;红宝石色

Ruby 如何处理诸如“quot&引用;红宝石色,ruby,encoding,utf-8,character-encoding,iconv,Ruby,Encoding,Utf 8,Character Encoding,Iconv,我想转换成“你好”" “HELLO”,删除插入数据库时导致问题的所有特殊字符。它们似乎不是UTF8的一部分 我想弄清楚,但我有点被困在这里: str = "A string with " to "A string with " some_format = "I have no clue what format this is" Iconv.conv(some_format, 'UTF-8//IGNORE', str) 这样做: Iconv.con

我想转换成“你好”" “HELLO”,删除插入数据库时导致问题的所有特殊字符。它们似乎不是UTF8的一部分

我想弄清楚,但我有点被困在这里:

str = "A string with " to "A string with "
some_format = "I have no clue what format this is"
Iconv.conv(some_format, 'UTF-8//IGNORE', str)
这样做:

Iconv.conv('UTF-16', 'UTF-8//IGNORE', str)
…返回

\376\377\000H\000E\000L\000L\000O?G?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?`?????\342
我不想转换成UTF8以外的东西,因为我必须处理阿拉伯文、中文、日文、韩文


任何帮助/提示都将不胜感激。我正在使用Ruby 1.8.7,但我应该很快迁移到1.9.3。在这两种情况下都可以使用的解决方案是最好的,但仅适用于1.9.3的解决方案也很好。

这里有一种方法可以删除特定编码中不存在的字符(将字符串转换为其他编码时)

但是,您的问题可能不同,因为这些有问题的字符不太可能不是utf-8的一部分。 可能的问题:

  • 也许只是因为你使用的字体不知道如何显示这些字符,很少有字体能完全覆盖utf-8字符。 我不知道如何显示这些字符串,但请确保使用具有良好字符覆盖率的字体。例如DejaVu

  • 您确定您的数据库已正确配置为使用utf-8吗

  • 还要小心,因为您的字符串可能非常好,但由于utf-8支持不完整(我以前也遇到过这种情况),无法显示在终端或数据库应用程序中。因此,当调试显示出现错误时,有时调试会变得很棘手…(这有意义吗?)


  • 这些“角色”来自哪里?如果它们“不是utf-8的一部分”(我甚至不确定这是否有意义),当你得到它们时,它们是什么编码?@Wooble:它们来自用户输入。我不确定它们应该是什么。因为有一个UTF-16,这是有意义的,但UTF-8和UTF-16只是unicode字符集的编码。如果unicode中存在一个字形,它可以用任何一种编码来表示。我猜你真正拥有的是n不是字符,而是未知编码中的字节。您必须确保在从用户获取输入时,您知道他们发送的是什么编码。@Wooble哦,好的,我明白您的意思。但是我怎么知道编码呢?我实际上是在调用一个返回此信息的API,所以我无法控制数据的输入方式。
    # -*- coding: utf-8 -*-
    a = "⚒og"
    p a => ⚒og
    p a.encode('iso-8859-1', :undef => :replace, :replace => '') => og