Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby On Rails > Юникод не хочет работать


Автор: 2048Terrabit 13.9.2009, 18:41
Юникод не хочет правельно прописать вывод функции puts rss.get_summary() см. код в низу

Код

require 'rss/1.0'
require 'rss/2.0'
require 'open-uri'
require 'open-uri'
$KCODE = 'u'
require 'jcode'

class Rssreader
  def initialize(url)
    source = url # url or local file
    content = "" # raw content of rss feed will be loaded here
    open(source) do |s| content = s.read end
    @rss = RSS::Parser.parse(content, false)
  end
  
   # returns the first 3 titles from the rss feed
  def get_summary()
    buffer = '['
    for i in 0..2
      buffer += @rss.items[i.to_i].title + ' | '
    end      
    buffer.slice(0,buffer.length-3) + ']'
  end
  
  def enclosure?
    @rss.items.to_s.scan('<enclosure').length > 0
  end
  
   def get_enclosure_url
    enclosure = @rss.items[0].enclosure
    enclosure.url
  end
  
  def rwget(url, filename)
    file = File.new(filename, 'w')
    file.puts open(url, 'User-Agent' => 'Ruby-wget').read
  end
  
  def download_enclosure()
    if self.enclosure? then
      enclosure_url = self.get_enclosure_url()
      local_filename = File.basename(enclosure_url)
      #puts local_filename
      if not File.exist?(local_filename) then
        puts 'downloading enclosure ...'
        self.rwget(enclosure_url, local_filename)
        puts 'download completed'
      else
        puts 'enclosure downloaded already'
      end
    end
  end    
end
 
  if __FILE__ == $0
    url = "http://hlprophet.ucoz.ru/news/rss/"
    rss = Rssreader.new(url)
    puts rss.get_summary()
    rss.download_enclosure()
  end

Автор: Goganchic 13.10.2009, 13:39
А если так попробовать:
Код

buffer.chars.to_a.slice(0,buffer.chars.count-3).to_s + ']'

Кривовато конечно, но все же

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)