Если в файле есть не только байты <= 0x0F (после спецификации), чтобы убедиться, что он правильно закодирован в UTF-8, вам нужно будет проверить правильность последовательностей и - даже если все последовательности действительны - проверить также, если каждый кодовая точка из последовательности использует самую короткую из возможных последовательностей и также проверяет, не существует ли кодовая точка, которая соответствует высокому или низкому суррогату. Также проверьте, не превышает ли максимальное число байтов последовательности 4, а самая высокая кодовая точка равна 0x10FFFF. Наивысшая кодовая точка ограничивает также биты полезной нагрузки начального байта не более 0x4, а полезная нагрузка первого следующего байта не выше 0xF. Если все упомянутые проверки пройдены успешно, ваша спецификация UTF-8 говорит правду.

ользую фид данных, который недавно добавил заголовок спецификации Unicode (U + FEFF), и моя задача rake теперь испорчена им.

Я могу пропустить первые 3 байта сfile.gets[3..-1] но есть ли более элегантный способ чтения файлов в Ruby, который может обрабатывать это правильно, независимо от того, присутствует спецификация или нет?

Ответы на вопрос(3)

Ваш ответ на вопрос