Использование PHP 5.3.2, у меня возникают проблемы с обработкой запроса на странице, чье имя имеет умляут в нем: öPHP, urldecode() и умляут - ö
делая запрос с помощью Firefox + Живите HTTP-заголовки для страницы test_ö_test.htm, я могу видеть, светлячок автоматически преобразует/кодирует умляут, когда он делает запрос:
GET /test_%C3%B6_test.htm HTTP/1.1
Теперь, используя http://meyerweb.com/eric/tools/dencoder/ Я могу кодировать/декодировать между test_ö_test.htm и test_ % C3% B6_test.htm, поэтому я считаю, что кодировка верна.
Использование urldecode РНР(), я получаю test_ö_test.htm
И возненавидел 404 возвращается. Обратите внимание, что test_ö_test.htm существует в файловой системе.
Когда я тестирую с помощью javascript's escape(), я получаю test_% F6_test.htm. Когда я подключаю это к моему браузеру, я получаю страницу контента успешно возвращенной. urldecode() превращается обратно в умлаут.
urldecode() является однобайтным, а% C3% B6 кажется многобайтным. Во всяком случае, почему бы не кодировать имена ваших страниц на стороне сервера? Или, что еще лучше, не использовать расширенные символы вообще. –
Возможный дубликат [Расшифровка URL в PHP] (http://stackoverflow.com/questions/1756862/url-decoding-in-php) –
Да, это в основном такая же проблема - с удовольствием удаляем это при желании. – starmonkey