2010-06-04 34 views
2

這絕對是一個語言問題,我們的代碼和我們的數據庫 都包含中文字符。ruby​​ on rails語言問題「GBK中的字節序列無效」

****這是我的環境:

關於您的應用程序的環境 紅寶石版本1.9.1(I386-的mingw32) 的RubyGems版本1.3.5 機架版本1.0 的Rails 2.3.5版 活動記錄2.3.5版 活動資源2.3.5版 行動梅勒版本2.3.5 積極支持2.3.5版 應用程序根目錄C:/ path_to_my_root 環境發展 數據庫適配器的MySQL 數據庫架構版本20100327010640

****這是我的本地主機3000上運行我的紅寶石服務器後:

ArgumentError in HomeController#construction 

invalid byte sequence in GBK 

RAILS_ROOT: C:/path_to_my_root 
Application Trace | Framework Trace | Full Trace 

C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
template_error.rb:43:in `split' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
template_error.rb:43:in `source_extract' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
template_error.rb:86:in `compute_backtrace' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
template_error.rb:11:in `initialize' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
template.rb:212:in `new' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
template.rb:212:in `rescue in render_template' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
template.rb:205:in `render_template' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
base.rb:265:in `render' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
base.rb:352:in `_render_with_layout' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/action_view/ 
base.rb:262:in `render' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/base.rb:1250:in `render_for_file' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/base.rb:951:in `render' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/benchmarking.rb:51:in `block in 
render_with_benchmark' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activesupport-2.3.5/lib/ 
active_support/core_ext/benchmark.rb:17:in `block in ms' 
C:/Ruby19/lib/ruby/1.9.1/benchmark.rb:309:in `realtime' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activesupport-2.3.5/lib/ 
active_support/core_ext/benchmark.rb:17:in `ms' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/benchmarking.rb:51:in `render_with_benchmark' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/mime_responds.rb:135:in `block in custom' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/mime_responds.rb:179:in `call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/mime_responds.rb:179:in `block in respond' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/mime_responds.rb:173:in `each' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/mime_responds.rb:173:in `respond' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/mime_responds.rb:107:in `respond_to' 
C:/Users/Howard/Documents/local/vjoin/app/controllers/ 
home_controller.rb:53:in `construction' 
..... 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/ 
methodoverride.rb:24:in `call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/params_parser.rb:15:in `call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/session/cookie_store.rb:93:in `call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/failsafe.rb:26:in `call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/lock.rb:11:in 
`block in call' 
:8:in `synchronize' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/lock.rb:11:in 
`call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/dispatcher.rb:114:in `block in call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/reloader.rb:34:in `run' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/actionpack-2.3.5/lib/ 
action_controller/dispatcher.rb:108:in `call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails/rack/ 
static.rb:31:in `call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/urlmap.rb:46:in 
`block in call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in 
`each' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in 
`call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/rails/rack/ 
log_tailer.rb:17:in `call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/ 
content_length.rb:13:in `call' 
C:/Ruby19/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/handler/ 
webrick.rb:50:in `service' 
C:/Ruby19/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' 
C:/Ruby19/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' 
C:/Ruby19/lib/ruby/1.9.1/webrick/server.rb:183:in `block in 
start_thread' 

Request 

Parameters: 

None 

Show session dump 

Response 

Headers: 

{"Cache-Control"=>"no-cache", 
"Content-Type"=>"text/html"} 

****我該怎麼辦?我試圖在網上搜索,沒有發現太多。 我發現的唯一的事情就是像把以下內容 application_controller:

before_filter :set_charset, :set_locale 
def set_charset 
    response.headers["Content-Type"] = "text/html; charset=utf-8" 
    WIN32OLE.codepage = WIN32OLE::CP_UTF8 end 

但是這仍然無法正常工作。 我是紅寶石新手,所以不太瞭解它。

感謝您的幫助。

回答

1

由於1.9.1對字符串和本地化的處理方式發生了變化,因此Rails 2.3.5在所有情況下似乎都不會適用於Ruby 1.9.1。

嘗試降級紅寶石到1.8.7,看看這是否有幫助。 (測試這個最簡單的方法就是使用RVM(http://rvm.beginrescueend.com/

FYI在我來說,我是能夠解決的,確保包括這個問題:

編碼:UTF8

在我的數據庫。陽明海運

+0

夥計!!!!!!非常感謝!!!!!固定它....大聲笑 – user357203 2010-07-11 18:18:44

6

的Linux:

export LC_ALL=en_US.UTF-8 
export LANG=en_US.UTF-8 

的Windows:

set LC_ALL=en_US.UTF-8 
set LANG=en_US.UTF-8 
+0

這個命令只適用於cmd的會話;請參閱http://superuser.com/questions/65816/setting-or-modifying-a-system-wide-environment-variable-in-cmd-exe – Timothy 2012-10-16 01:08:26