si prega di seguire il codice:Perché HAML gettare codifica problema quando ERB e ERUBIS dont
__ENCODING__
# => #<Encoding:UTF-8>
Encoding.default_internal
# => #<Encoding:UTF-8>
Encoding.default_external
# => #<Encoding:UTF-8>
Caso 1: HAML getta Encoding::UndefinedConversionError
string = "j\xC3\xBCrgen".force_encoding('ASCII-8BIT')
string.encoding
# => #<Encoding:ASCII-8BIT>
Haml::Engine.new("#{string}").render
## => Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8
ERB.new("<%= string %>").result(binding)
# => "jürgen"
# => Resulting encoding is #<Encoding:UTF-8>
Erubis::Eruby.new("<%= string %>").result(binding)
# => "j\xC3\xBCrgen"
# => resulting encoding is #<Encoding:ASCII-8BIT>
Caso 2: HAML non si butta error
Domanda: Perché HAML fallendo nel caso 1 e riuscendo nel caso 2
questo che sto chiedendo sto affrontando il problema simile quando un rendering in HAML che saltare pagina a causa di Encoding :: CompatibilityError
L'unico modo in questo momento penso di sapere come evitare l'errore questo è fare un force_encoding della mia stringa a UTF8 usando .force_encoding('UTF-8')
che tipo di evitare questo problema, ma devo farlo in ogni pagina in cui voglio usare il dato stringa cioè "j \ xc3 \ xBCrgen" (che ho trovato un po 'stupido per fare considerando le loro molte pagine)
Qualsiasi indizio? ?
Cosa succede se si passa la stringa direttamente alla chiamata 'Engine.new()' senza interpolarla? – screenmutt