Ruby 1.8 e caso UTF-8 stringa dell'istruzione confrontare

voti
1

Ho un compito Rake (in lib / task directory) che ho eseguito con cron sul mio web hosting condiviso. Il problema è che voglio mettere a confronto una stringa UTF-8 utilizzando caso statment ma il mio codice sorgente non è codifica UTF-8. Se salvo il codice sorgente come UTF-8 non v'è errore quando provo ad avviarlo :(

Cosa devo fare?

Può essere letta questa stringhe da esterno file txt UTF-8?

PS sto usando Ruby 1.8

PS Voglio dire confrontare in questo modo:

result = case utf8string
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
È pubblicato 09/12/2008 alle 17:16
fonte dall'utente
In altre lingue...                            


3 risposte

voti
0

Provare a utilizzare il mb_charsmetodo da Rails' ActiveSupport quadro:

result = case utf8string.mb_chars
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Risposto il 09/12/2008 a 22:18
fonte dall'utente

voti
2

Ho scoperto che il mio problema non era nel caso in cui statment

Il problema era che quando salvo il mio codice sorgente in formato UTF-8, il mio editor di testo aggiungere 3 byte (BOM) all'inizio per indicare che la codifica è UTF-8.

D: Cos'è una distinta base?

A: Un byte order mark (BOM) è costituito dal codice di carattere U + FEFF all'inizio di un flusso di dati, dove può essere usato come una firma che definisce l'ordine dei byte e la forma di codifica, in primo luogo dei file di testo in chiaro non marcate. Sotto alcuni protocolli di livello superiore, l'uso di una distinta può essere obbligatorio (o proibiti) nel flusso di dati Unicode definita in tale protocollo.

UTF-8, UTF-16, UTF-32 & BOM

L'errore che ottengo è:

1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression
Risposto il 10/12/2008 a 09:34
fonte dall'utente

voti
1

Direi che è necessario cambiare il vostro editor di testo come è distinta non necessario per UTF-8. UTF-8 non è byte-ordine dipendente. Vedere testo del link per i dettagli.

Risposto il 11/12/2008 a 10:57
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more