2016-09-27 114 views
0

我用的iconv替换字符:如何与它们各自的字在红宝石替换非ASCII字符1.8.7

<%= Iconv.iconv("ascii//translit", "utf-8", "ENDÜœSTRIYEL").to_s %> 

它显示, END oeSTRIYEL

而在IRB它显示像这个:

irb(main):006:0> Iconv.iconv('ascii//translit', 'utf-8', 'ENDÜœSTRIYEL').to_s 
=> "ENDUoeSTRIYEL" 

如何获得iras的nonascii字符的完整翻译?

谢谢。

回答

0

的glibc的设施的iconv有取决于语言的音译:

$ echo "ENDÜœSTRIYEL" | LC_ALL=C iconv -f utf-8 -t ascii//translit 
END?oeSTRIYEL 
$ echo "ENDÜœSTRIYEL" | LC_ALL=de_DE.UTF-8 iconv -f utf-8 -t ascii//translit 
ENDUEoeSTRIYEL 
$ echo "ENDÜœSTRIYEL" | LC_ALL=ja_JP.UTF-8 iconv -f utf-8 -t ascii//translit 
ENDUoeSTRIYEL 

正如你可以看到,三种不同的三种不同的语言环境的结果。

如果你正在主持,是为了处理来自不同国家的用户输入的服务器,你有两个选择:

  • 使用单一语言环境为所有用户,并希望它是所有不够好。
  • 为每次转换临时切换区域设置(使用uselocale,而不是setlocale)。但是,我不知道uselocale在Ruby中是否可用。
+0

但即时通讯使用红宝石1.8.7 ..我无法使用像上面提到的 –