Вопрос

У меня есть задача Rake (в каталоге lib/tasks), которую я запускаю с помощью cron на своем общем веб-хостинге.Проблема в том, что я хочу сравнить строку UTF-8, используя оператор случая, но мой исходный код не закодирован в UTF-8.Если я сохраню исходный код как UTF-8, при попытке запустить его возникнет ошибка :(

Что мне нужно сделать?

Можно ли прочитать эти строки из внешнего текстового файла UTF-8?

P.S.Я использую Руби 1.8

P.S.Я имею в виду сравнение следующим образом:

result = case utf8string
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Это было полезно?

Решение

Я бы сказал, что вам нужно сменить текстовый редактор, поскольку спецификация нет необходим для UTF-8.UTF-8 не зависит от порядка байтов.Видеть текст ссылки для получения подробной информации.

Другие советы

Я обнаружил, что моя проблема не в операторе случая

Проблема заключалась в том, что когда я сохраняю исходный код в формате UTF-8, мой текстовый редактор добавляет в начале 3 байта (BOM), чтобы указать, что кодировка UTF-8.

Вопрос:Что такое спецификация?

А: Оценка байта (BOM) состоит из кода символа U+FEFF в начале потока данных, где его можно использовать в качестве подписи, определяющей порядок байта и форму кодирования, в первую очередь из безымянных файлов открытого текста.В соответствии с некоторыми протоколами более высокого уровня использование BOM может быть обязательным (или запрещено) в потоке данных Unicode, определенном в этом протоколе.

UTF-8, UTF-16, UTF-32 и спецификация

Ошибка, которую я получаю, была:

1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression

Попробуйте использовать mb_chars метод из Rails Активная поддержка рамки:

result = case utf8string.mb_chars
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top