Я имею дело с заменяющим символом внутри базы данных MySQL … и это нормально, если он остается там, но я пытаюсь его отредактировать. Моя форма отображает символ в виде алмазной формы с вопросительным знаком в нем ( ). Поэтому я отправляю форму, я сравниваю данные между данными в форме и данными, чтобы увидеть, изменилась ли она. Проблема здесь в том, что когда я отправляю форму, она заменяет символ замены на & # 65533; который является эквивалентом сущности html, поэтому, когда это происходит, оно не сравнивается, и код думает, что строка изменилась – что у нее есть, но не совсем. Я попытался использовать разные методы превращения заменяющего символа в эквивалент сущности html из базы данных при ее сравнении – он начинает превращать другие, казалось бы, обычные символы в другой эквивалент эквивалента символа html, и превращать объекты html в заменяющий персонаж, который просто не работает для этого, но оба они терпят неудачу. И да, я пробовал html_entity_decode () и htmlspecialchars_decode ()
Мои вопросы: Как я могу заставить символ замены превращаться в объект html?
По какой-то причине веб-браузер отправляет ЗАМЕНА ХАРАКТЕРА (U + FFFD), поскольку он десятичный, числовой HTML Entitiy: �
, Вероятно, вы уже выводили его в браузер?
Однако, если вы ожидаете, что ввод содержит объекты HTML, вам необходимо их декодировать, если вы не хотите хранить их в своей базе данных в формате HTML. Чтобы декодировать числовые объекты в пределах кодируемой строки UTF-8 $str
:
$convmap = array (0, 0x10FFFF, 0, 0xFFFFFF); $output = mb_decode_numericentity($str, $convmap, 'UTF-8');
Этот код действительно выполняет преобразование, которое вы ищете ( Demo ), однако сначала вы должны выяснить, почему представлен цифровой объект HTML.
Поскольку вы предпочитаете unicode, я предлагаю вам использовать UTF-8 для веб-страницы:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
и для формы:
<form action="" method="post" accept-charset="utf-8">
удачи.
Проверьте кодировку на html (например)
<meta http-equiv="Content-Type" content="text/html; charset=<your_charset>">
и в вашей базе данных (например, в MySQL)
DEFAULT CHARACTER SET <your_charset> COLLATE <your_collate>
Он должен быть равным.