0

私はrails3.0.10を使用しています

def districts
    @names = Node.where("name like ?", "%#{params[:term]}%").limit(5).map(&:name)
    respond_to do |format|
      format.json {render :json => @names}
      format.xml {render :xml => @names}
    end
  end

xmlをレンダリングして正しい名前を取得します
が、jsonをレンダリングして名前を次のようにエンコードします => ["name1", "name2", "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd"]
正しい名前を取得したい適切な言語で

助けはありますか?

前もって感謝します

4

1 に答える 1

0

応答を送信する前に、文字列を強制的に UTF-8 にする必要があります

上記のコードにこの行を追加します

@names.map{|name| name.force_encoding('UTF-8')}

これにより、名前の配列がループされ、ASCII-8BIT から UTF-8 にエンコードされます。

だから私の方法は

def districts
  @names = Node.where("name like ?", "%#{params[:term]}%").limit(5).map(&:name)
  @names.map{|name| name.force_encoding('UTF-8')}
  respond_to do |format|
    format.json {render :json => @names}
    format.xml {render :xml => @names}
  end
end

ツアーモデルノードを次のよう に変更することもできます

class Node < ActiveRecord::Base
 def name
  super().force_encoding('UTF-8')
 end
end

私はこのコードから確信しています、それは正しく動作し
ますありがとう
M.SH

于 2012-06-19T13:26:21.400 に答える