LINUX.ORG.RU

История изменений

Исправление disarmer, (текущая версия) :

Например «Malformed UTF-8 character» возникает при обработке последовательностей байт, которые не соответствуют символам в utf. В utf-8 на один символ приходится разное количество байт, пропустив один или несколько, невозможно будет правильно декодировать строку дальше(не знаем где граница символа)

Кракозябры, квадратики, вопросики появляются в случае других кодировок, в utf такие проблемы фатальны (например в БД такие данные тоже не вставить).

как оно вообще это детектит?

perl не детектит на что похожа строка, он возвращает ошибку при попытке сделать из набора байт utf-8 строку. Определить кодировку можно только эвристически (enca например).

Вообще в perl почти эталонная поддержка unicode, проблема скорее всего решится изменением одной-двух строк, скорее всего в части обработки данных от пользователя

Исходная версия disarmer, :

Например «Malformed UTF-8 character» возникает при обработке последовательностей байт, которые не соответствуют символам в utf. В utf-8 на один символ приходится разное количество байт, пропустив один или несколько, невозможно будет правильно декодировать строку дальше(не знаем где граница символа)

Кракозябры, квадратики, вопросики появляются в случае других кодировок, в utf такие проблемы фатальны (например в БД такие данные тоже не вставить).

как оно вообще это детектит?

perl не детектит на что похожа строка, он возвращает ошибку при попытке сделать из набора байт utf-8 строку. Определить кодировку только эвристически (enca например).

Вообще в perl почти эталонная поддержка unicode, проблема скорее всего решится изменением одной-двух строк, скорее всего в части обработки данных от пользователя