4

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のサポートを追加することですが、次にどこに行くべきかわからなくなっています。

前もって感謝します!

4

1 に答える 1

0

これはロケールに問題があるようです - php でも観察されるのと同じです。ロケールが設定されていない場合 (ロケールに関係なく)、iconv 関数は機能しません (時々?)。

Cを使用してロケールを設定できる低レベルの修正が提案されているruby​​-forum.com のスレッドを参照してください。setlocale()

もう 1 つの提案は、locale gemをインストールすることです。

于 2010-08-04T16:07:30.477 に答える