Специальные символы, экранирующие JS и PHP - PullRequest
0 голосов
/ 14 июля 2010

мое приложение получает текст из поля ввода и отправляет его через ajax в файл php для сохранения в db.

var title = encodeURIComponent($('#title').val());

если я экранирую () заголовок, то все в порядке, но у меня есть проблемыс символом «+».Поэтому я использую encodeURIComponent ().

Теперь у меня возникла проблема с немецкими специальными символами, такими как "ö", ä "" ü ", они будут отображаться как что-то криптетное.

Есть идеи, как я могу решить эту проблему?

Thx

Ответы [ 2 ]

1 голос
/ 14 июля 2010

Полагаю, это связано с кодировкой: ваша 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');

Иначе, браузер будет использовать свою кодировку по умолчанию - которая не обязательно правильная , и, возможно, отображать мусор.

0 голосов
/ 14 июля 2010

Вы можете использовать escape("AbcÄüö"), и вы получите "Abc% C4% FC% F6"

В php вы можете использовать urldecode($myValue), чтобы снова получить "AbcÄüö"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...