0

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

当我做 Twitter::Search.new("keywords"). 它返回一个带有如下文本字段的哈希:

文字:“谢谢@Isabouriaud @nicod92160 @NicolasAtger Watson “une des r\u00E9alisations”

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

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

我试过: ActiveSupport::JSON.decode("\"\u00E9\"") => é 但 ActiveSupport::JSON.decode("\"\invit\u00E9\"") != invité (我想要它)

任何想法?

非常感谢。 在此处输入图像描述

解决方案

我不得不使用最新的 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
4

1 回答 1

0

您看到的是 ruby​​ 终端中 unicode 字符串的表示形式。如果您将其写入文件并使用支持 unicode 的编辑器打开它,重音应该看起来不错。

您可以设置 $KCODE = 'UTF-8' 为终端解决此问题。

于 2011-11-23T09:44:18.460 回答