sto tirando testo da siti remoti e cercando di caricarlo in una Ruby 1.9/Rails 3 app che utilizza UTF-8 per impostazione predefinita.Convert caratteri non ASCII da ASCII-8BIT a UTF-8
Ecco un esempio di un testo incriminato:
sguardiCancer Res; 71(3); 1-11. ©2011 AACR.\n
Quel codice Copyright ampliato come questo:
Cancer Res; 71(3); 1-11. \xC2\xA92011 AACR.\n
Rubino mi dice che stringa viene codificato come ASCII-8 bit e l'alimentazione nel mio App Rails mi ottiene questo:
incompatible character encodings: ASCII-8BIT and UTF-8
Posso spogliare il codice di copyright fuori usando questo Gex
str.gsub(/[\x00-\x7F]/n,'?')
per produrre questo
Cancer Res; 71(3); 1-11. ??2011 AACR.\n
Ma come posso ottenere un simbolo di copyright (e vari altri simboli come lettere greche) convertito negli stessi simboli in UTF-8? Sicuramente è possibile ...
vedo riferimenti a utilizzare force_encoding, ma questo non funziona:
str.force_encoding('utf-8').encode
Mi rendo conto che ci sono molte altre persone con problemi simili, ma ho ancora vedere una soluzione che lavori.
Come si tira il testo dai siti remoti? Scraping pagine? Si prega di mostrare alcuni esempi di codice, incluso il client HTTP che si sta utilizzando, e se si sta analizzando le pagine usando Nokogiri, Hpricot o ReXML. Questo problema potrebbe essere il risultato di come stai recuperando la pagina e/o di come stai analizzando la pagina. Una volta che sappiamo che stai estraendo il contenuto in modo sicuro dai dati, possiamo aiutarti a convertire i dati tra i set di codici. –
Codice semplice reale - open-uri e nokogiri - ad es. doc = Nokogiri :: XML (open (url)) quindi doc.css (...). text per estrarre i blocchi di testo rilevanti –
Si prega di mostrare il codice di esempio. Il file che stai recuperando è HTML o XML? Nokogiri si preoccupa della differenza quando analizza. Inoltre, fornire alcuni URL, perché ogni sito su Internet è diverso. –