我正在使用带有官方 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