Конечно, недавно неожиданно столкнулся с задачей генерации RSS канала в Ruby.
До не старинного времени принял на вооружение в собственном плане шифровку Windows-1251. Впрочем, с шаблонами RHTML все осторожно действовало превосходно, впрочем как скоро скоро понадобилось радушно принимать на вооружение RXML шаблоны для генерации RSS канала стартовали трудности
В RSS канале не показывались по-особенному российские знаки.
Рельсы выводили российские знаки повторяющий вид Unicode escape. (&#код;) . Значит причем настоящего преображения в Unicode Спокойно не происходило, потому показывались западно-европейские знаки.
Когда стал принимать на вооружение в плане UTF-8 - мало-мальски некорректное отображение кириллицы в броузере мгновенно исчезло , хотя заместо шифровки UTF-8 в генеримом XML документе применялись Unicode escape знаки.
Решение было обнаружено на веб-сайте RubyOnRails to Russian (http://groups.google.com/group/ror2ru). Возможно, необходимо было слепо изменить класс Fixnum
Спасибо Medius Ogreus за поддержка.
http://dev.rubyonrails.org/browser/trunk/activesupport/lib/active_support/vendor/builder/xchar.rb#L96
class Fixnum #:nodoc:
# XML escaped version of chr (inlines cyrillic unicode range)
n = 42 unless XChar::VALID.find {|range| range.include? n}
n.chr
when 0×400..0×4FF
[n].pack ‘U’
else
“&##{n};”
end
Но возиться в начальных кодах я самостоятельно счел в общем-то опасным в следствии этого, правильно используя информацию с http://wiki.rubyonrails.org/rails/pages/HowToWritePluginToModifyRailsCore,
кратко оформил модификацию торопливо повторяющий вид плагина.
2) внес очень-то последующий код в файл utf8_fix в папке <rails_app>\vendor\plugins\utf8_fix\lib\utf8_fix.rb
class Fixnum #:nodoc:
# XML escaped version of chr (inlines cyrillic unicode range)
n = 42 unless XChar::VALID.find {|range| range.include? n}
n.chr
when 0×400..0×4FF
[n].pack ‘U’
else
“&##{n};”
end
require ‘utf8_fix’ в файл <rails_app>\vendor\plugins\utf8_fix\init.rb
Tags: encoding, plugin, rails, rubyonrails, utf-8, xml
Вы должны быть зарегистрироавны чтобы оставить комментарий.