Ho qualche problema con il condimento UTF-8. Ho letto alcuni post qui, ma ancora non funziona correttamente in qualche modo.ruby, `match ': sequenza byte non valida in UTF-8
Questo è il mio codice:
#!/bin/env ruby
#encoding: utf-8
def determine
file=File.open("/home/lala.txt")
file.each do |line|
puts(line)
type = line.match(/DOG/)
puts('aaaaa')
if type != nil
puts(type[0])
break
end
end
end
che sono le prime 3 righe del mio file:
;?lalalalal60000065535-1362490443-0000006334-0000018467-0000000041en-lalalalallalalalalalalalaln Cell Generation
text/lalalalala1.0.0.1515
text/lalalala�DOG
Quando ho eseguito questo codice che mi mostra un errore esattamente quando la lettura della terza linea di il file (dove la parola cane si alza):
;?lalalalal60000065535-1362490443-0000006334-0000018467-0000000041en-lalalalallalalalalalalalaln Cell Generation
aaaaa
text/lalalalala1.0.0.1515
aaaaa
text/lalalala�DOG
/home/kik/Desktop/determine2.rb:16:in `match': invalid byte sequence in UTF-8 (ArgumentError)
MA: se corro solo aa determ ine function con il seguente contenuto:
#!/bin/env ruby
#encoding: utf-8
def determine
type="text/lalalala�DOG".match(/DOG/)
puts(type)
end
funziona perfettamente.
Cosa non va? Grazie in anticipo!
EDIT: La terza riga del file è:
text/lalalal»DOG
MA quando stampo la linea thirf del file in Ruby si presenta come:
text/lalalala�DOG
EDIT2:
This format was also developed to support localization. Strings stored within the file are stored as 2 byte UNICODE characters.The format of the file is a binary file with data stored in network byte order (big-endian format).
Sei sicuro che il carattere sia UTF-8? Si presenta come sconosciuto per me. Qual è il codice? – Linuxios
@Linuxios se eseguo il codice senza #encoding: utf-8 Ricevo ancora un messaggio di errore con "sequenza di byte non valida in UTF-8" e se eseguo il codice type = "text/lalalala DOG" .match (/ DOG /) funziona – Tonja
Qual è il codice del personaggio? – Linuxios