Ruby Iconv适用于irb和ruby调试器,但不适用于unit testing

我在Ubuntu 10.04 64位上运行带有Rails 2.3.5的Ruby 1.8.7。 我写了一个方法,应该采用这样的字符串, "É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的更多支持,但我不知道下一步该去哪里。

提前致谢!

这似乎是语言环境的一个问题 – 在php中也是如此,如果没有语言环境设置(无论语言环境如何),其中(有时?)iconv函数不起作用。

请参阅ruby-forum.com上的一个主题,其中建议使用低级别修复,允许您使用C中的setlocale()设置区域设置。

另一个建议是安装locale gem 。