Domanda

(Scusate se una domanda newb ... ho fatto un po 'di ricerca, onestamente ...)

Sto scrivendo un codice Ruby on Rails per analizzare feed RSS / Atom. Il mio codice sta gettando-up su su un simbolo fastidioso '£'.

Ho cercato l'approccio di normalizzare i campi di descrizione e il titolo del feed prima di fare qualsiasi altra cosa:

descr = self.description.mb_chars.normalize(:kc)

Tuttavia, quando colpisce la stringa con il '£', sto cercando di indovinare che mb_chars colpisce un problema e restituisce un oggetto normale rubino String. Ottengo l'errore:

undefined method `normalize' for #<String:0x5ef8490>

Allora, qual è il processo migliore per preparare difensiva queste stringhe per l'inserimento nel database? (Ho bisogno di fare un po 'di elaborazione delle stringhe su di loro pure)

Il mio problema è aggravato nel senso che io non conosco il formato del feed che sto elaborazione. Per esempio, ho avuto un po 'di fortuna con la seguente riga:

descr = Iconv.new('UTF-8//IGNORE', 'UTF-8').iconv descr

Tuttavia, quando incontra il '£' è tronca semplicemente tutto dopo quel punto.

Quando ho visualizzare il simbolo '£' con la funzione String.inspect, visualizza a '\ 243'. In assenza di un metodo per 'correttamente' accordo con questo simbolo, sarei abbastanza felice di sostituirlo per un altro valore (come 'GBP'). Quindi aiutare con quel codice sarebbe apprezzato pure.

Il mangime in questione è http://www.dailymail.co. uk / Sport / Calcio / index.rss

È stato utile?

Soluzione 2

mi mancava qualcosa piuttosto semplice -. Stavo indovinando alla codifica del feed che stava arrivando in

Così ora sto guardando (a) il set di caratteri nelle intestazioni di risposta HTTP, quindi (b) la codifica nella dichiarazione XML nel feed stesso.

Una volta che ho la codifica I iconv utilizzare per spostare in UTF-8.

Fin qui tutto bene.

Altri suggerimenti

ho trovato una soluzione:

  

Per risolvere il problema, ho dovuto definire il $ KCODE (codifica) per il documento:

require 'rubygems'
require 'active_support/all'

$KCODE = 'UTF8'

str = "test ščž"
puts str.parameterize.inspect
puts str.parameterize.to_s

=> # => Test-SCZ

Original post: https: //rails.lighthouseapp .com / progetti / 8994 / biglietti / 3504-string-parametrizzare-normalize-bug

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top