【发布时间】:2011-03-04 01:16:04
【问题描述】:
我在 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 的更多支持,但我不知道下一步该去哪里。
提前致谢!
【问题讨论】:
-
它在您的 Rails 控制台中有效吗?在 ./script/console 中尝试
-
感谢 Rishav 的提示。我尝试运行: (Iconv.new('US-ASCII//TRANSLIT', 'utf-8').iconv "École À la Découverte").downcase.split.join('_') in ./script/console它产生:“ecole_a_la_decouverte”这是我所期望的,所以仍然没有骰子。不过这是个好主意!
-
+1 因为我不知道如何正确实现 Iconv 语法,而您的问题对我有帮助。
标签: ruby-on-rails ruby utf-8 iconv