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