2009-10-30 18 views
6

¿Cómo puedo hacer esto en Ruby?Cómo convertir con caracteres acentuados de Ruby en entidades especiales HTML

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

En otras palabras, convertir un carácter acentuado como ò a su versión HTML: ò

Traté de esta manera:

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

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

pero lo que me pasa esto (a partir de: 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 

¡Gracias por su tiempo!

  • Leonardo
+0

Acabo de probar su ejemplo con htmlentities 4.0.0 y todo funciona bien. No mucha ayuda, lo sé. :( –

Respuesta

12

había establecido explícitamente los $ KCODE para hacer su trabajo de ejemplo. Además, asegúrese de que su archivo de origen sea realmente codificado como 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

¡Funciona! Gracias Jonathan! (No puedo votar porque tengo menos de 15 reputación :-( –

+0

Puede "aceptar" la respuesta, sin embargo. –

+0

parámetro nombrado fue lo que hizo la diferencia para mí . Gracias. –

Cuestiones relacionadas