Ruby 1.8 i sprawa UTF-8 Łańcuch instrukcji porównać

głosy
1

Mam zadanie natarcia (w katalogu lib / zadań), że biegnę z cron na moim dzielonego hostingu. Problemem jest to, że chcę, aby porównać UTF-8 przy użyciu ciąg liter statment ale mój kod źródłowy nie jest kodowanie UTF-8. Gdybym zapisać kod źródłowy jako UTF-8 jest błąd, gdy próbuję go uruchomić :(

Co muszę zrobić?

Mogą być odczytywane z zewnętrznych to ciągi UTF-8 pliku txt?

PS Używam Ruby 1.8

PS Mam na myśli porównanie w ten sposób:

result = case utf8string
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Utwórz 09/12/2008 o 17:16
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
2

Okazało się, że mój problem nie był w przypadku statment

Problem polegał na tym, że kiedy mogę zapisać kod źródłowy w formacie UTF-8, mój edytor tekstu dodać 3 bajtów (BOM) na początku, aby wskazać, że kodowanie UTF-8.

Q: Co to jest BOM?

A: bom (BOM) składa się z kodu znaków U + FEFF na początku strumienia danych, gdzie może on być używany jako podpis określającej kolejność bajtów i formę kodowania, głównie z nieoznakowanych plików tekstu jawnego. W pewnych protokoły wyższego poziomu, zastosowanie BOM może być obowiązkowy (lub zabronione) w strumieniu danych Unicode określonym w tym protokole.

UTF-8 UTF-16, UTF-32 i BOM

Błąd, który pojawia się:

1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression
Odpowiedział 10/12/2008 o 09:34
źródło użytkownik

głosy
1

Powiedziałbym, że trzeba zmienić edytor tekstu jak BOM jest nie potrzebny do UTF-8. UTF-8 nie jest bajt zamówienie zależne. Zobacz tekst linku szczegóły.

Odpowiedział 11/12/2008 o 10:57
źródło użytkownik

głosy
0

Spróbuj użyć mb_charsmetody z Rails ActiveSupport ramach:

result = case utf8string.mb_chars
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Odpowiedział 09/12/2008 o 22:18
źródło użytkownik

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