http://localhost/fw/api/fw_api.php?rule=unicode&action=create&phrase=යුනිකෝඩ්
Я обращаюсь к указанному выше URL-адресу. В fw_api.php
, когда я повторяю $_SERVER['QUERY_STRING']
он не дает фактического значения моего значения в формате Юникода «යුනිකෝඩ්», как в URL-адресе. Есть ли какое-либо исправление для этого или я делаю / ожидаю чего-то не так? Нужна помощь.
header ('Content-type: text/html; charset=utf-8'); echo $_GET['phrase']; echo $_SERVER['QUERY_STRING']; die;
Фактический результат:
යුනිකෝඩ්
Правило = юникода и действие = создать и выражение =% E0% B6% BA% E0% B7% 94% E0% B6% B1% E0% B7% 92% E0% B6% 9A% E0% B7% 9D% E0% B6% A9% E0 % B7% 8A
Что я ожидал
යුනිකෝඩ්
Правило = юникода и действие = создать и фраза = යුනිකෝඩ්
Фактическое значение фактически «% E0% B6% BA% E0% B7% 94% E0 …»!
URL-адреса должны состоять из подмножества ASCII, они не могут содержать другие символы «Unicode». Ваш браузер может быть настолько приятным, что позволяет вводить произвольные символы Юникода и фактически отображать их как символы, но за кулисами значение URL-адреса кодируется в процентах . Вам придется декодировать его с помощью rawurldecode
.
Строка запроса автоматически анализируется и декодируется PHP и помещается в массив $_GET
(и $_POST
для тела запроса). Но необработанную строку запроса вам придется разобрать и расшифровать.