Полагаю, это связано с кодировкой: ваша HTML-страница может использовать UTF-8, а специальные символы кодируются так:
>>> encodeURIComponent('ö');
"%C3%B6"
Когда ваша PHP-страница получает это, она должназнать, что это UTF-8, и обращаться с ним как с UTF-8 - это означает, что все на стороне сервера должно работать с UTF-8:
- PHP-код должен использовать функции, которые могут работатьс многобайтовыми символами
- База данных (дБ, таблицы, столбцы, ...) должна использовать UTF-8 для хранения данных
- При создании страниц HTML необходимо указать, что это UTF-8 тоже ...
Например, если вы используете var_dump()
на стороне PHP для отображения того, что было отправлено с клиента, не забудьте указать, что сгенерированныйстраница находится в UTF-8, с чем-то вроде этого:
header('Content-type: text/html; charset=UTF-8');
Иначе, браузер будет использовать свою кодировку по умолчанию - которая не обязательно правильная , и, возможно, отображать мусор.