Символы MYSQL, такие как (‘, «,

#php #mysql #database #phpmyadmin

#php #mysql #База данных #phpmyadmin

Вопрос:

Я сохраняю базу данных, которая автоматически заполняется моими пользователями. но когда есть ввод, подобный My Father's Will . Это попадет в базу данных следующим образом: My Fatheramp;#x27;s Will .

Это не то, чего я хочу. Может кто-нибудь сказать мне, как включить эти виды специальных символов или, возможно, обойти, чтобы не показывать эти уродливые символы моим пользователям.

Я использую PHP, сервер MySQL и phpMyAdmin в качестве инструмента управления БД.

Комментарии:

1. Вам нужно правильно отформатировать свой пост. Это не имеет никакого смысла.

Ответ №1:

Похоже, что ' экранируется как символ HTML. Я предполагаю, что вы выполняете неправильный экранирование, например, используете htmlentities вместо mysql_real_escape_string . Если эта информация не помогла, пожалуйста, опубликуйте свой код. Это будет угадывание без.

Комментарии:

1. Есть ли способ изменить это, чтобы это «amp; # x27;» стало единственным qoute на странице?

2. html_entity_decode: php.net/manual/en/function.html-entity-decode.php Это позволяет вам указать набор символов. Убедитесь, что вы выбрали тот, который соответствует вашей базе данных.

Ответ №2:

Когда вы извлекаете значения из своей базы данных, используйте htmlspecialchars_decode(). Это преобразует все специальные символы html обратно в обычный текст.

 $str = 'My Fatheramp;#x27;s Will';
echo htmlspecialchars_decode($str);
  

выведет:

 My Father's Will
  

Ответ №3:

Я не могу понять, о чем вы спрашиваете, поскольку «Воля моего отца» и «Завещание моего отца» — это одно и то же?

Но, похоже, проблема связана либо с экранированием строки в PHP, либо с конфликтующей кодировкой в базе данных MySQL, попробуйте разобраться в обоих и, не стесняйтесь, уточните свой вопрос немного подробнее.

Комментарии:

1. Да, отредактировал мой пост … это было потому, что на этой странице специальные символы отображались как ‘

2. Как упоминалось выше, это похоже на проблему кодирования или экранирования при вставке данных с использованием PHP. Пробовали ли вы такие функции, как html_entity_decode(), для обработки данных перед вставкой в БД? Ссылка

Ответ №4:

Похоже, что вы, возможно, экранируете (например, htmlentities()) вашего ввода в php на пути к базе данных. Правильнее было бы вместо этого экранировать его только при выводе обратно на экран.

Ответ №5:

Скорее всего, где-то в вашем коде есть вызов htmlspecialchars(..., ENT_QUOTES) , который будет кодировать ' и " в символьные объекты. Если они находятся в базе данных в закодированном виде, и конечный пользователь видит символьные объекты, тогда вы выполняете двойное кодирование, и результат вашего скрипта будет примерно таким amp;amp;x27; .