Como converter com Ruby caracteres acentuados em entidades especiais HTML
-
22-07-2019 - |
Pergunta
Como posso fazer isso em Ruby?
puts some_method("ò")
# => "ò"
Em outras palavras converter um carácter acentuado como ò
a sua versão HTML: ò
Eu tentei assim:
# coding: utf-8
require 'rubygems'
require 'htmlentities'
require 'unicode'
coder = HTMLEntities.new
string = "Scròfina"
puts coder.encode(string, :named)
mas o que eu tenho esse (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
Obrigado pelo seu tempo!
- Leonardo
Solução
Eu tinha definir explicitamente a $ KCODE para fazer o seu exemplo de trabalho. Além disso, verifique se o arquivo de origem é 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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow