2009-07-09 53 views
1

(很抱歉,如果對於新手的問題...我已經做了相當多的研究,誠實...)如何安全解析Ruby/Rails中的多字節Feed?

我正在寫一些Ruby on Rails的代碼來解析RSS/ATOM供稿。我的代碼正在討論一個討厭的'£'符號。

我一直在做任何事情之前正常化飼料的說明和標題字段的方法:

descr = self.description.mb_chars.normalize(:kc) 

然而,當它擊中與「£」的字符串,我猜mb_chars遇到問題並返回一個常規的Ruby String對象。我得到的錯誤:

undefined method `normalize' for #<String:0x5ef8490> 

那麼防禦性地準備這些字符串插入到數據庫中的最佳過程是什麼? (我也需要對它們進行一堆字符串處理)

我的問題是複雜的,我不知道我正在處理的Feed的格式。舉例來說,我已經有一些運氣以下行:

descr = Iconv.new('UTF-8//IGNORE', 'UTF-8').iconv descr 

然而,當它遇到的「£」在那之後它只是截斷的一切。

當我用String.inspect函數顯示'£'符號時,它顯示在'\ 243'處。如果未能正確處理此符號的方法,我很樂意將其替換爲另一個值(如「GBP」)。所以,與該代碼的幫助,將不勝感激。

有問題的飼料是http://www.dailymail.co.uk/sport/football/index.rss

回答

1

我失去了一些東西非常基本的 - 我猜測那是在未來飼料的編碼

所以現在我在看(一) charset,然後(b)在feed中的XML聲明中進行編碼。

一旦我有了編碼,我使用iconv將它移動到UTF-8中。

到目前爲止這麼好。