2011-11-23 41 views
0

我正在使用Twitter API与官方的红宝石包装。用Rails 2.3.9解决Unicode问题?转换一个简单的字符串

当我做Twitter :: Search.new(“关键字”)。它返回一个看起来喜欢这个文本字段的哈希:

文字:“留言Merci @Isabouriaud @ nicod92160 @NicolasAtger沃森" UNE DES·R \ u00E9alisations”

我知道这是unicode的,但一直没找到在ruby中以纯文本格式转换此字符串的方法。它无关,与我的数据库,因为我展示马上鸣叫......

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

我想: 的ActiveSupport: :JSON.decode(“\”\ u00E9 \“”)=> 但是 ActiveSupport :: JSON.decode(“\”\ invit \ u00E9 \“”)!=invité(我想要它)

有什么想法?

非常感谢。 enter image description here

解决方案

我不得不使用最新的JSON宝石与它解析它。 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 
+0

大部分角色都逃脱了,这很奇怪,但有些(あ,す,で)不是......: -/ – deceze

+0

是的,这是http://search.twitter.com/search.json的直接输出?q =关键字 - 我花了2个小时试图找出解决方案.. – Alextoul

回答

0

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

您可以设置$ KCODE ='UTF-8'来解决这个问题。

+0

谢谢莫斯科为您解答。但它也在我的网页浏览器中显示出来,即使我已经用UTF-8编码了所有东西。我找到了一个解决方案,将编辑我的帖子。 – Alextoul