Он не преобразуется как имеющий часть query
URL после того, как фрагмент недействителен.
RFC 3986 определяет URI, состоящий из следующих частей:
foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment
Порядок не может быть изменен.Следовательно,
URL1: http://www.example.com/?query=Траливали#ajax_call
будет обрабатываться правильно, а
URL2: http://www.example.com/#ajax_call?query=Траливали
- нет.Если мы посмотрим на URL2
, IE на самом деле правильно обрабатывает URL, обнаружив фрагмент как #ajax_call?query=Траливали
без запроса.Фрагмент всегда последний и никогда не отправляются на сервер .
IE правильно закодирует компонент запроса URL1
, поскольку он обнаружит его как запрос.
Что касается декодирования в PHP, %D2
и т.п. автоматически декодируются в переменной $_GET['query']
.Причина, по которой переменная $_GET
была заполнена неправильно, заключалась в том, что в URL2
нет запроса в соответствии со стандартом.
Кроме того, еще одна вещь ... при выполнении 'Траливали' == $_GET['query']
это будетТолько в том случае, если ваш PHP-скрипт сам кодируется в UTF-8.Ваш текстовый редактор должен быть в состоянии сообщить вам кодировку вашего файла.