Ruby 1.8 und UTF-8-String case-Anweisung vergleichen

stimmen
1

Ich habe eine Rake-Task (in lib / Aufgaben-Verzeichnis), die mich mit cron auf meinem Shared Web Hosting laufen. Das Problem ist, dass ich einen UTF-8-String mit Fall statment vergleichen will, aber mein Quellcode ist nicht UTF-8 codiert. Wenn ich Quellcode speichern als UTF-8 gibt Fehler, wenn ich versuche, es zu starten :(

Was ich machen muss?

Mai dieses Strings aus anderer UTF-8 txt-Datei gelesen werden?

PS Ich bin mit Ruby 1.8

PS meine ich auf diese Weise vergleichen:

result = case utf8string
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Veröffentlicht am 09/12/2008 um 17:16
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
2

Ich fand, dass mein Problem nicht bei statment war

Das Problem war, dass, wenn ich meinen Quellcode in UTF-8-Format speichern, mein Texteditor 3 Bytes (BOM) am Anfang hinzufügen, daß die Codierung, um anzuzeigen, ist UTF-8.

F: Was ist eine Stückliste?

A: A Bytereihenfolgemarkierung (BOM) besteht aus dem Zeichencode - U + FEFF am Anfang eines Datenstroms, in dem es als eine Signatur verwendet werden kann , die Byte - Reihenfolge und die Kodierung bildet, in erster Linie von unmarkierten Klartext Dateien definieren. Unter einigen höheren Protokolle kann die Verwendung eines BOM sein in diesem Protokoll definiert obligatorisch (oder verboten) im Unicode - Datenstrom.

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

Der Fehler, der ich war:

1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression
Beantwortet am 10/12/2008 um 09:34
quelle vom benutzer

stimmen
1

Ich würde sagen , Sie brauchen , um Ihren Text - Editor zu ändern Stückliste wird nicht für UTF-8 benötigt. UTF-8 ist nicht Byte-Reihenfolge abhängig. Siehe Link - Text für weitere Einzelheiten.

Beantwortet am 11/12/2008 um 10:57
quelle vom benutzer

stimmen
0

Versuchen Sie, die unter Verwendung von mb_charsVerfahren aus Rails' Active Rahmen:

result = case utf8string.mb_chars
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Beantwortet am 09/12/2008 um 22:18
quelle vom benutzer

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