известная фича
Misha v.3 21.06.2009 02:28
в момент обращения к $form:xyz парсер перекодирует данные из кодировки, заданной в $response:charset в кодировку, заданную в $request:charset.
декодирование происходит один раз при обнаружении смены кодировки (в момент первого обращения к form после её смены).
однако в вашем случае все равно все $form перекодируются 3 раза (первый раз до этого кода, когда у вас была задана 1251, второй раз после того, как вы указали utf-8 в момент обращения к $form:q и третий раз, после того, как вы опять указали 1251 и обратились к любой $form. несколько перекодирований -- дополнительный расход памяти, который может быть существенным, если пользователь вам запостил файл)