用Rails 2.3.9解决Unicode?转换简单字符串

时间:2011-11-23 08:01:48

标签: ruby-on-rails ruby unicode encoding ruby-on-rails-2

我正在使用官方ruby gem包装器的Twitter API。

当我做Twitter :: Search.new(“关键字”)时。它返回一个带有文本字段的哈希,看起来像这样:

text:“Merci @Isabouriaud @ nicod92160 @NicolasAtger Watson”une des r \ u00E9alisations“

我知道这是unicode但无法找到在ruby中以纯文本格式转换此字符串的方法。它与我的数据库无关,因为我正在显示推文......

我只需要在“réalisations”中转换“r \ u00E9alisations”的功能

我试过了: ActiveSupport :: JSON.decode(“\”\ u00E9 \“”)=> é 但 ActiveSupport :: JSON.decode(“\”\ invit \ u00E9 \“”)!=invité(我多么想要)

有什么想法吗?

非常感谢。 enter image description here

解决方案

我不得不使用最新的json gem并用它解析它。目前用于rails 2.3的twitter gem可能不再是最新的了。

我认为另一种解决方案是升级到Rails 3并使用force_encoding方法。

class TwitterWrapper


  def self.base
    "http://search.twitter.com"
  end


  #json_string.gsub!(/\\u([0-9a-z]{4})/) {|s| [$1.to_i(16)].pack("U")}
  def self.search(keyword)
    keyword = keyword.gsub(" ","%20")
    read("#{base}/search.json?q=#{keyword}")["results"]
  end

  private

  def self.read(url)
    JSON.parse(Net::HTTP.get(URI.parse(url)))
  end

end

1 个答案:

答案 0 :(得分:0)

你看到的是ruby终端中unicode字符串的预表示。如果你把它写到一个文件并用一些支持unicode的编辑器打开它,重音应该看起来很好。

您可以设置$ KCODE ='UTF-8'来为终端修复此问题。