Sinatra Sinatra 乱码

esseak · 2012年06月15日 · 最后由 esseak 回复于 2012年06月16日 · 3298 次阅读
# encoding: UTF-8

require 'sinatra'
require 'rubygems'
require 'oci8'
$KCODE = 'UTF-8'
get '/data' do
  table = params[:table]
  @conn = OCI8.new("sd", "cc","cc")
  @a =[]
#执行查询操作
 @t = []
@cursor = @conn.exec('select * from xxx') { |r|
 #a<<r; 
 #puts r.join('-')

 r.each{|w|
  if w.is_a?(BigDecimal)
 #puts w.to_int
 @t<<w.to_int
 else
 @t<< w
 end
 }
 }
 @ret = @t.join('@')
 @headers={"Content-Type"=>"text/html;charset=utf-8"}
 puts @t.join('@')
 "#{@ret}"
  #params[:splat]
end

简单的代码,在浏览器里死活中文乱码 控制台里不是乱码 正常,初学 ruby+sinatra,求解。 谢谢。

注意一下数据库的数据是否 u8 ps: require 'sinatra' require 'rubygems' 顺序换一下

#1 楼 @alvin2ye 谢谢你的回复。我查了一下 SIMPLIFIED CHINESE_CHINA.AL32UTF8,数据库应该也是 utf8 的。控制台里没问题。我在试试

#1 楼 @alvin2ye 谢谢你,解决了,虽然不太明白具体是怎么一回事。 if w.is_a?(BigDecimal) @t<<w.to_int elsif w.is_a?(String) @t<< w.encode('UTF-8') else @t<< w end

需要 登录 后方可回复, 如果你还没有账号请 注册新账号