(初心者の質問で申し訳ありません...正直なところ、かなりの調査を行いました...)
RSS/ATOM フィードを解析するための Ruby on Rails コードを書いています。私のコードは、厄介な '£' 記号でスローアップしています。
私は他のことをする前に、フィードの説明とタイトルのフィールドを正規化するアプローチを試みてきました:
descr = self.description.mb_chars.normalize(:kc)
しかし、'£' の付いた文字列にヒットすると、mb_chars が問題を起こし、通常の Ruby String オブジェクトを返すのではないかと推測しています。エラーが発生します:
undefined method `normalize' for #<String:0x5ef8490>
では、データベースに挿入するためにこれらの文字列を防御的に準備するための最良のプロセスは何ですか? (それらに対しても一連の文字列処理を行う必要があります)
私の問題は、処理しているフィードの形式がわからないという点で複雑です。たとえば、次の行でいくつかの運がありました。
descr = Iconv.new('UTF-8//IGNORE', 'UTF-8').iconv descr
ただし、「£」に遭遇すると、それ以降はすべて単純に切り捨てられます。
String.inspect 関数で「£」記号を表示すると、「\243」に表示されます。このシンボルを「正しく」処理するメソッドに失敗した場合は、別の値 (「GBP」など) に置き換えるだけで十分です。したがって、そのコードの助けもいただければ幸いです。
問題のフィードはhttp://www.dailymail.co.uk/sport/football/index.rssです