.erb 中不能显示从mysql检索出的中文 incompatible character encodings: UTF-8 and ASCII-8BIT

问题现象:

  在.html.erb中显示mysql中的中文字符时会出现 

incompatible character encodings: UTF-8 and ASCII-8BIT 错误

问题可能原因:

 

mysql_adapater出来的数据是ASCII-8BIT

解决方法:

 

修改根目录下的\Ruby192\lib\ruby\gems\1.9.1\gems\activerecord-3.0.9\lib\active_record\connection_adapters中的
mysql_adapter.rb文件
 def select(sql, name = nil)
          @connection.query_with_result = true
          result = execute(sql, name)
          rows = []
          result.each_hash { |row| rows << row }
          result.free
          @connection.more_results && @connection.next_result    # invoking stored procedures with CLIENT_MULTI_RESULTS requires this to tidy up else connection will be dropped

      # add begin
      if @config[:encoding] && @config[:encoding]=="utf8"
            rows.each do |row|
              row.each do |key, value|
                if (value.class == String)
                  value.force_encoding("UTF-8")
                end
              end
            end
          end
      # add end
          rows
        end

 

 

 

 


 

posted @ 2011-09-15 14:28  kting  阅读(6851)  评论(0编辑  收藏  举报