Rails应用程序中的Iconv.conv,用于从unicode转换为ASCII // translit

时间:2010-08-24 18:01:24

标签: ruby-on-rails ruby apache encoding character-encoding

我们希望将斯洛伐克语中的unicode字符串转换为纯ASCII(无重音符号/ carons)这样做:č-&gt;cš-&gt;sá-&gt;aé-&gt; e等< / p>

我们尝试过:

cstr = Iconv.conv('us-ascii//translit', 'utf-8', a_unicode_string)

它正在使用一个系统(Mac)并且没有在另一个系统(Ubuntu)上工作,它正在给它'?'转换后的重音字符。

问题:iconv正在使用LANG / LC_ALL变量。我不知道为什么,当知道编码时,但是......你必须将locale变量设置为something.utf8,例如:sk_SK.utf8或en_GB.utf8

下一步是尝试在config / application.rb中设置ENV ['LANG']和ENV ['LC_ALL']。在红宝石中,Iconv忽略了这一点。

另一种尝试是在/ etc / default / locale中使用全局系统设置 - 这在命令行中有效,但对于Rails应用程序则无效。原因:apache有自己的环境。因此,最终的解决方案是将LANG / LC_ALL变量添加到/ etc / apache2 / envvars中:

export LC_ALL="en_GB.utf8"
export LANG="en_GB.utf8"
export LANGUAGE="en_GB.utf8"

重新启动apache并且运行正常。

这比问题更具有一点方法性。但是,如果有人有更好的解决方案,我想了解它。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用unaccent方法。