Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rake和console之间的Rails字符编码不同_Ruby On Rails_Ruby_Rake_Rails Console - Fatal编程技术网

Ruby on rails rake和console之间的Rails字符编码不同

Ruby on rails rake和console之间的Rails字符编码不同,ruby-on-rails,ruby,rake,rails-console,Ruby On Rails,Ruby,Rake,Rails Console,我有一个rake任务,它从mssqldb中提取一些数据,最近我注意到一些特殊字符被编码为问号“?”。在试图深入研究这个问题时,我意识到我只能将其作为rake任务进行回购,而不能从控制台进行回购 下面是代码的一个片段: require 'dbi' namespace :db do task :test => :environment do db2 = DBI.connect("DBI:ODBC:DRIVER=FreeTDS;SERVER=x.x.x.x;PORT=1433;DAT

我有一个rake任务,它从mssqldb中提取一些数据,最近我注意到一些特殊字符被编码为问号“?”。在试图深入研究这个问题时,我意识到我只能将其作为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

r['name']的值是多少。在这两种情况下编码?我使用的是ruby 1.8.7,所以我得到了一个未定义的方法'encoding'