javascript encodeURIComponent эквивалент в php - PullRequest
0 голосов
/ 08 августа 2011

Мне нужно преобразовать %F3%BE%AE%A2 в этот символ "?" в PHP.Когда я пытался использовать

rawurldecode('%F3%BE%AE%A2');

, тогда он дает 2 символа вместо 1 символа.

Как я могу правильно преобразовать его?

РЕДАКТИРОВАТЬ: Чтобы быть более конкретным, это суррогат UTF-16 char.it дает \udbba\udfa2 в javascript. Теперь, если я хочу отправлять данные через API javascript, тогда я мог бы легко отправить «" »как один символ.Но по соображениям безопасности мне нужно использовать PHP. Вот здесь и начинается проблема. Кажется, кодирование '%F3%BE%AE%A2' с rawurldecode() along with utf-8 header не дает мне нужный мне символ.Жаль, что я объяснил это. Спасибо за вашу оценку.

1 Ответ

3 голосов
/ 08 августа 2011

На самом деле rawurldecode() дает вам правильный результат.Этот символ состоит из четырех байтов при кодировании в utf-8, и правило в кодировке url заключается в преобразовании каждого байта в нотацию% XX.rawurldecode () возвращает вам эти 4 байта, но, вероятно, вы не установили кодировку своей страницы в utf-8, поэтому ваш браузер неправильно интерпретирует эти байты.добавьте это к вашему <head>:

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

, и вы должны увидеть правильный символ.


Это тестовая страница, которую я сделал:

<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
    <?php echo rawurldecode('%F3%BE%AE%A2'); ?>
</body>
</html>

что я вижу в своем браузере:

?

именно тот символ, который вы хотите видеть.

...