2011-11-23 38 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