[Moscow.pm] определение кодировки файла

Сергей Мартынов sergey на martynov.info
Вт Июн 3 02:33:16 PDT 2008


> Товарищи, как мне определить кодировку входящего файла? Я получаю его как
> параметр в POST-запросе, и не знаю заранее в какой он кодировке. Программа
> работает в utf8.

Если речь идет именно про файл - то браузер при отправке его не меняет
и он приходит точно такой, какой лежал на машине клиента. Про то, как
догадаться, в какой он кодировке, тут уже достаточно написали.

Однако, если у вас вдруг работает "русский апач" (mod_charset) - то
сервер при приеме POST-запроса может перекодировать данные, побив
файл. Чтобы этого не происходило, надо прописать в конфиге апача
CharsetRecodeMultipartForms Off (вообще говоря, в современном мире
mod_charset уже не нужен, поэтому проще отключить его совсем -
CharsetDisable On).

Если же речь идет о полях формы, и заранее неизвестно, в какой
кодировке браузер их отправит - то можно применить трюк: подставляем в
форму скрытое поле с русским текстом (например "слово"), а когда ловим
форму - по содержимому скрытого поля догадываемся, в какой кодировке
браузер отправил данные (например тупо пробуем разные варианты
перекодировки, пока не получим исходное "слово").



-- 
С уважением, Сергей Мартынов.


Подробная информация о списке рассылки Moscow-pm