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 を使用していることを忘れていました