2010-09-07 7 views
9

So che in Ruby 1.9 puoi facilmente ricodificare una stringa come questa.Conversione semplice di stringa in UTF-8 in Ruby 1.8

s = s.encode('UTF-8') 

Qual è l'equivalente in Ruby 1.8? Ciò che richiede le linee ha bisogno.

Tutti i tutorial che ho visto sono inutilmente complicati e non capisco cosa sta succedendo.

+0

rubino 2.8? rubino 2.9? –

+1

Mi dispiace che sia il parlare stanco - corretto. – Alex

risposta

10

James Edward Gray II ha un detailed collections of posts che si occupa di problemi di codifica e set di caratteri in Ruby 1.8. Il post intitolato Encoding Conversion with iconv contiene informazioni dettagliate.

Riepilogo: la gemma iconv fa tutto il lavoro di conversione delle codifiche. Assicurarsi che sia installato con: (. Senza codifica intrinseca)

gem install iconv 

Ora, è necessario sapere che cosa codifica la stringa è attualmente a come Ruby 1.8 ossequi stringhe come un array di byte, ad esempio, dire la vostra stringa era in latin1 e si voleva convertirlo in utf-8

require 'iconv' 

string_in_utf8_encoding = Iconv.conv("UTF8", "LATIN1", string_in_latin1_encoding) 

L'ordine degli argomenti è:

  1. codifica di destinazione
  2. 012.
  3. Fonte codifica
  4. String per convertire
+0

Cosa posso fare se non sono sicuro della codifica della stringa iniziale? C'è un modo per rilevarlo? – Alex

+0

In generale? No. Se le possibilità di codifica in entrata sono limitate, puoi essere in grado di utilizzare una sorta di euristica, ma non sarebbe completamente accurata o affidabile (diventando più inaffidabile con l'aumentare del numero di possibili codifiche.) – rjk

+0

Cheers. Suppongo che poiché è immesso da un campo SQL, posso supporre che questo tipo di codifica dei caratteri. – Alex

Problemi correlati