引号转向问号

时间:2009-04-17 11:51:45

标签: ruby parsing encoding utf-8

所以我有一个 ruby​​ 脚本,它解析HTML页面并将提取的字符串保存到DB中...... 但我得到了令人厌烦的字符(通常是问号),而不是纯文本......

例如:“某些文字”而不是“某些文字”

我已经尝试过HTML实体和CGI :: unescape ......但无济于事...... 做了一些谷歌搜索设置$ KCODE ='u'&要求'jcode' 仍然没有工作......

任何建议/指针都会很棒

由于

PS:使用mysql 5.1

2 个答案:

答案 0 :(得分:4)

您的脚本在数据库中存储引号(而不是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" />

答案 1 :(得分:2)

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

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

Ruby有一个iconv实现,可以在编码类型之间进行转换。有关详细信息,请参阅here