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,但无论我选择什么,它总是直接从提要中显示该数字代码。

如何强制它呈现正确的字符?

编辑:这是我使用所选答案建议的 gem 的最终帮手,包括在此处,因此查看此内容的任何人都可以看到我所做的。

*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 回答