Ключевые слова:charset, perl, cgi, web, (найти похожие документы)
Date: Tue, 27 Aug 2002 13:37:54 +0000 (UTC)
From: Spartak Radchenko <spartak@aif.ru>
Newsgroups: fido7.ru.unix
Subject: Определение кодировки в которой были отправлены данные из HTML формы.
VW> Фигня в том, что наиболее распространенный браузер (IE) хреново понимает
VW> кодировку, отличную от windows-1251 В ФОРМАХ. А именно, в зависимости от
VW> некоторых привходящих обстоятельств, он решает что не может
VW> отконвертировать. И ни слова не говоря (а мог бы сказать магическое
VW> слово Content-Type: application/x-url-encoded; charset=windows-1251)
VW> шлет введенные юзером данные на сервер в той кодировке, в которой юзер
VW> их ввел.
Есть такая буква в этом слове. Вот только Русский Апач тут не поможет.
У нас в формах ввода есть скрытое поле, по которому скрипт на сервере
определяет, в какой же кодировке пришла эта фигня от клиента.
Рекомендую:
<input type="Hidden" name="EncKey" value="я">
if(Ord($EncKey) == 0xd1) DecodeInput("k"); /* КОИ */
if(Ord($EncKey) == 0xff) DecodeInput("w"); /* Win */
if(Ord($EncKey) == 0xdf) DecodeInput("m"); /* Mac */
if(Ord($EncKey) == 0xef) DecodeInput("d"); /* DOS */
К сожалению, кодировку ISO по букве "я" не отловишь, но принцип ясен.
VW> При условии что все документы хранятся на сервере в
VW> кодировке windows-1251 и все скрипты которые что-то делают с текстом
VW> работают с локалью ru_RU.CP1251. Ибо более другие браузеры, работающие в
VW> системах, где родная кодировка koi8-r в таких глюках не замечены.
А как насчёт IE под Маком? Нет, Win-1251 тоже не панацея. Лично я за КОИ,
не люблю файлы в левых кодировках на сервере.