Ich habe ein Problem mit UTF-8-Verkettung. Ich habe hier einige Posts gelesen, funktioniert aber immer noch nicht richtig.Ruby, `match ': ungültige Bytefolge in UTF-8
, dass mein Code:
#!/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
, dass die ersten drei Zeilen meiner Datei sind:
;?lalalalal60000065535-1362490443-0000006334-0000018467-0000000041en-lalalalallalalalalalalalaln Cell Generation
text/lalalalala1.0.0.1515
text/lalalala�DOG
Wenn ich diesen Code ausführen genau es zeigt mir einen Fehler, wenn die dritte Zeile des Lesens die Datei (wobei das Wort Hund steht):
;?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)
ABER: wenn ich nur aa determ laufen Funktion mit folgendem Inhalt:
#!/bin/env ruby
#encoding: utf-8
def determine
type="text/lalalala�DOG".match(/DOG/)
puts(type)
end
es funktioniert perfekt.
Was läuft da falsch? Vielen Dank im Voraus!
EDIT: Die dritte Zeile in der Datei ist:
text/lalalal»DOG
aber wenn ich die thirf Zeile der Datei in Ruby drucken zeigt sich, wie:
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).
Sind Sie sicher, dass das Zeichen UTF-8 ist? Es erscheint als unbekannt für mich. Was ist der Code? – Linuxios
@Linuxios wenn ich den Code ohne # encoding: utf-8 Ich bekomme immer noch eine Fehlermeldung mit "ungültigen Byte-Sequenz in UTF-8" und wenn ich den Code ausführen Typ = "text/lalalala DOG" .match (/ DOG /) es funktioniert – Tonja
Was ist der Zeichencode? – Linuxios