我在 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
and ./script/console
似乎有效。
有谁知道发生了什么事以及为什么测试失败?我唯一的想法是包括调试器或irb
以某种方式增加了对 UTF-8 的更多支持,但我不知道下一步该去哪里。
提前致谢!
这似乎是区域设置的问题 - 在 php 中也观察到同样的情况,如果没有设置区域设置(无论区域设置如何),iconv 函数(有时?)将不起作用。
See ruby-forum.com 上有一个关于此问题的主题 http://www.ruby-forum.com/topic/70827建议进行低级修复,允许您使用设置区域设置setlocale()
in C.
另一个建议是安装语言环境宝石 http://www.yotabanana.com/hiki/ruby-locale.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)