2009-10-30 8 views
6

Jak mogę to zrobić w Ruby?Jak konwertować z znakami akcentowanymi przez Ruby w specjalnych elementach HTML

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

Innymi słowy konwertować znak akcentowany jak ò do jego wersji HTML: ò

próbowałem tak:

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

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

ale co otrzymuję to (od: 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 

Dziękuję za poświęcony czas!

  • Leonardo
+0

Po prostu przetestowałem twój przykład z htmlentities 4.0.0 i wszystko działa poprawnie. Wiem, że niewiele pomoc. :( –

Odpowiedz

12

miałem jawnie ustawić $ KCODE aby Państwa przykładową pracę. Upewnij się również, że plik źródłowy jest zakodowany w rzeczywistości jako 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

Działa! Dziękuję Jonathan! (Nie mogę głosować na ciebie, ponieważ mam mniej niż 15 punktów reputacji :-( –

+0

Możesz "zaakceptować" odpowiedź, chociaż ... –

+0

nazwany parametr był tym, co mnie zmieniło . Dzięki. –

Powiązane problemy