2

SimpleRSS gem を使用して WordPress RSS フィードを解析しています。唯一の問題は、フィード内の多くの文字が数値コードを使用してエンコードされていることです。

’ 

それ以外の

'

ファイル

*rss_helper.rb*

module RssHelper
  require 'rubygems'
  require 'simple-rss'
  require 'open-uri'

  def rss
    rss = SimpleRSS.parse open('http://example.com/feed/')
  end
end

show.html.slim

...
-rss.entries.each do |entry|
  =entry.title

entry.title を使用して、次のことを試しました。

=entry.title.encode("UTF-8")

=entry.title.encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace, :replace => '')

どちらも機能していません。iconv gem に関する多くのリソースを見つけましたが、私が理解していることから、現在は廃止されています。

.force_encodingの代わりにメソッドを使用しようとしました.encodingが、何を選択しても、フィードから直接その数値コードが常に表示されます。

適切な文字を強制的にレンダリングするにはどうすればよいですか?

編集:これは、選択した回答によって提案された宝石を使用した最終的なヘルパーです。ここに含まれているため、これを見た人は誰でも私が何をしたかを見ることができます。

*rss_helper.rb*

def decode(string) 
  coder = HTMLEntities.new 
  return coder.decode(string) 
end 

show.html.slim

...
decode(entry.title)
...
4

1 に答える 1

3

HTMLEntitiesを介して実行します。

HTMLEntities.new.decode(rss_feed_content)

これにより、エンティティでエンコードされた文字が文字どおりの文字に変換されます。

于 2012-11-29T03:14:27.513 に答える