2012-03-18 13 views
8

ho la seguente riga di codice nel mio Ruby on Rails app, che controlla se la stringa data contiene caratteri coreani o meno:RoR classe di caratteri regex

isKorean = !/\p{Hangul}/.match(word).nil? 

Funziona perfettamente nella console, ma solleva un errore di sintassi per l'applicazione effettiva:

invalid character property name {Hangul}: /\p{Hangul}/ 

che cosa mi manca e come posso farlo funzionare?

+0

Che cosa è il risultato di '" # {RUBY_VERSION} -p # {RUBY_PATCHLEVEL} "' nella console e nell'app? –

risposta

13

Questo è un problema di codifica dei caratteri, è necessario aggiungere:.

# encoding: utf-8 

alla parte superiore del rubino file che si sta utilizzando quel regex nel Probabilmente si può utilizzare qualsiasi codifica che la classe carattere' re usando esiste invece di UTF-8 se lo si desidera. Si noti che in Ruby 2.0, UTF-8 è ora il valore predefinito, quindi non è necessario in Ruby 2.0+.

Questo è noto come "commento magico". È possibile e dovrebbe leggere di più su encoding in Ruby 1.9. Si noti che la codifica in vista Rails è gestito automaticamente dal config.encoding (impostato su UTF-8 di default in config/application.rb.

E 'stato probabilmente lavorando nella console perché il terminale è impostato per utilizzare UTF-8 già.

+1

Perfetto, grazie. Avendo impostato la codifica predefinita su UTF-8 in 'application.rb', mi aspettavo funziona per tutta l'app. Si è verificato un errore. – Arnold

+2

@ArnoldSakhnov Sì, quell'impostazione si applica solo alle visualizzazioni (presumibilmente perché Rails può impostare la codifica quando esegue il rendering della vista, ma Ruby è l'unico file della classe di caricamento, ecc.) . –

Problemi correlati