parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Настройки кодировок не менялись

AlexanderM 22.01.2014 20:49

$request:charset/$response:charset не менялись:
$request:charset[windows-1251]
$response:charset[utf-8]
Тестовый файл это подтверждает.
Так и было, так и должно быть. (Конечно, файлы можно было бы уже и перекодировать в utf-8 и соответственно изменить $request:charset, но сейчас дело не в этом).

Обнаружил, что проблема похоже проявляется в том случае, когда url проходит через mod_rewrite. Правило для mod_rewrite в .htaccess выглядит примерно так:
RewriteCond %{REQUEST_URI} !(/test/)
RewriteRule ^([-a-zA-Z0-9_/]+)$ /index.p3?mode=$1&%{QUERY_STRING} [L]

То есть, если uri выглядит как "/search/?ss=тест", то на самом деле обрабатываться это должно скриптом "/index.p3?mode=search&ss=тест" - и похоже, что именно на этом этапе происходит проблема с кодировкой.
А если index.p3 скопировать в /test/ и вызвать его, написав в адресной строке "/test/index.p3?mode=search&ss=тест", то проблемы с кодировкой нет.
Причём, $request:uri в обоих случаях выдаёт кириллицу в закодированном виде (в обоих случаях ss=%D1%82%D0%B5%D1%81%D1%82). Получается, $form:ss во втором случае успешно раскодируется, а в первом - почему-то нет.

Честно говоря, в полной растерянности - как это вообще исправлять?