【问题标题】:Quotation marks turn to question marks引号变成问号
【发布时间】:2009-04-17 11:51:44
【问题描述】:

所以我有一个 ruby 脚本来解析 HTML 页面并将提取的字符串保存到数据库中...... 但我得到的是奇怪的字符(通常是问号)而不是纯文本......

例如:“Some TEXT”而不是“Some Text”

我尝试过 HTML 实体和 CGI​​::unescape ...但无济于事... 做了一些谷歌搜索 n set $KCODE = 'u' & require 'jcode' 还是不行……

任何建议/指针都会很棒

谢谢

PS : 使用 mysql 5.1

【问题讨论】:

    标签: ruby parsing encoding utf-8


    【解决方案1】:

    您的脚本正在数据库中存储引号(而不是 ASCII 引号)的 Unicode 转义序列。

    这实际上很好 - 它表明数据库本身工作正常,但为了获得最佳结果,您应该确保将表设置为使用 'utf8_collat​​ion_ci' 以便字符串排序正常工作。

    输出显示为“â€〜”的事实只是意味着您的终端(和/或网页)输出编码不正确。

    如果是终端输出,请确保 $ENV{'LANG'} 设置为适当的 UTF8 编码(例如 en.UTF-8),并且终端仿真器本身的设置方式相同。

    如果是 HTML 输出,请确保页面编码也设置为 UTF-8,即:

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    

    【讨论】:

      【解决方案2】:

      您存储数据的数据库是否能够处理 Unicode?这些症状似乎暗示它不是。 MySQL下的Unicode支持请见this link

      有问题的引号似乎不是标准的 ASCII 引号,而是Unicode ones

      Ruby 有一个iconv 实现来在编码类型之间进行转换。请参阅here 了解更多信息。

      【讨论】:

      • 但请注意,如果原始页面不是 UTF-8 并且您希望将副本存储在 UTF-8 中,您只需要转换编码
      • ... 或者它是 UTF-8 并且您不想将它存储在 UTF-8 中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多