我们想将斯洛伐克语中的 unicode 字符串转换为纯 ASCII(不带重音符号/carons)那就是: č->c š->s á->a é->e etc.
我们尝试过:
cstr = Iconv.conv('us-ascii//translit', 'utf-8', a_unicode_string)
它在一个系统 (Mac) 上运行,但在另一个系统 (Ubuntu) 上运行时出现“?”转换后的重音字符。
问题:iconv 正在使用 LANG/LC_ALL 变量。我不知道为什么,当编码已知时,但是......你必须将语言环境变量设置为 something.utf8,例如:sk_SK.utf8 或 en_GB.utf8
下一步是尝试在 config/application.rb 中设置 ENV['LANG'] 和 ENV['LC_ALL']。 ruby 中的 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,它成功了。
这与其说是一个问题,不如说是一个操作方法。但是,如果有人有更好的解决方案,我想知道。
最佳答案
你可以试试unaccent方法。
关于ruby-on-rails - Rails 应用程序中的 Iconv.conv 将 unicode 转换为 ASCII//translit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3559509/