4

我在 Ubuntu 10.04 64 位上运行 Ruby 1.8.7 和 Rails 2.3.5。我编写了一个方法,它应该采用这样的字符串,"École À la Découverte"并输出这样的文件系统名称"ecole_a_la_decouverte"

(Iconv.new('US-ASCII//TRANSLIT', 'utf-8').iconv "École À la Découverte").downcase.split.join('_')

当我在代码中测试这一行时,测试总是失败,说不"cole_la_dcouverte"等于"ecole_a_la_decouverte". 奇怪的是,如果我插入调试器行并使用调试器控制台,测试就会通过。同样,手动运行这条线irb似乎./script/console可以工作。

有谁知道发生了什么以及为什么这个测试失败了?我唯一的想法是包括调试器或irb以某种方式增加对 UTF-8 的更多支持,但我不知道下一步该去哪里。

提前致谢!

4

1 回答 1

0

这似乎是语言环境的问题 - 在 php 中也观察到相同的情况,如果没有设置语言环境(无论语言环境如何),其中(有时?)iconv 函数不起作用。

请参阅ruby​​-forum.com上的一个线程,其中建议进行低级修复,允许您使用setlocale()C设置语言环境。

另一个建议是安装locale gem

于 2010-08-04T16:07:30.477 回答