2009-10-30 2 views
6

Как это сделать на Ruby?Как конвертировать с символами Ruby с акцентом в специальных объектах HTML

puts some_method("ò") 
# => "ò" 

Другими словами преобразовать акцентированный характер, как ò к его HTML-версии: ò

Я попытался, как это:

# coding: utf-8 
require 'rubygems' 
require 'htmlentities' 
require 'unicode' 

coder = HTMLEntities.new 
string = "Scròfina" 
puts coder.encode(string, :named) 

но что я получаю это (от: http://htmlentities.rubyforge.org/):

/Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:85:in `unpack': malformed UTF-8 character (expected 2 bytes, given 1 bytes) (ArgumentError) 
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:85:in `encode_decimal' 
from (eval):2:in `encode_extended' 
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:18:in `encode' 
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:18:in `gsub!' 
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities/encoder.rb:18:in `encode' 
from /Library/Ruby/Gems/1.8/gems/htmlentities-4.2.0/lib/htmlentities.rb:74:in `encode' 
from unicode_pleasure.rb:8 

Благодарим вас за внимание!

  • Leonardo
+0

Просто проверил ваш пример с htmlentities 4.0.0 и все работает нормально. Я не знаю, что это такое. :( –

ответ

12

я явно установить $ KCODE, чтобы сделать ваш пример работы. Кроме того, убедитесь, что ваш исходный файл действительно закодирован как UTF-8!

# coding: utf-8 
require 'rubygems' 
require 'htmlentities' 
require 'unicode' 
$KCODE = 'UTF-8' 
coder = HTMLEntities.new 
string = "Scròfina" 
puts coder.encode(string, :named) 
+0

Это работает! Спасибо, Джонатан! (я не могу проголосовать за вас, потому что у меня меньше 15 репутации :-( –

+0

Вы можете «принять» ответ, хотя. –

+0

Именованный параметр был тем, что меня разницы . Благодаря. –