1

MS SQL データベースからいくつかのデータを取得する rake タスクがありますが、最近、いくつかの特殊文字が疑問符 '?' としてエンコードされていることに気付きました。この問題を掘り下げようとしているときに、コンソールからではなく、rake タスクとしてのみレポできることに気付きました。

コードがどのように見えるかのスニペットを次に示します。

 
require 'dbi'

namespace :db do 
  task :test => :environment do 
    db2 = DBI.connect("DBI:ODBC:DRIVER=FreeTDS;SERVER=x.x.x.x;PORT=1433;DATABASE=MyDB;TDS_VERSION=8.0;UID=user_id;PWD=pass")              
    rows = db2.execute('select * from Topic where id = 123')
    rows.each { |r| puts r['name'] }
    rows.finish
  end
end

これを次のように実行すると:

 rake RAILS_ENV=production db:test

それは生成します:

The Devil?s Tail

しかし、次を使用してまったく同じコマンドを実行すると:

/> script/console production

私は得る

The Devil`s Tail

バックティックに注意してください。なぜこれを引き起こしているのか誰にも分かりますか?ENV 変数を再確認したところ、どちらも LANG: en_US.UTF-8 を持っています。

編集

ruby 1.8.7p72 と Rails 2.3.4 を使用していることを忘れていました

4

0 に答える 0