#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;
.