РЕДАКТИРОВАТЬ:
Хорошо, у меня есть некоторые данные (тонны данных), которые извлекаются из таблицы DB DB, ничего особенного в том, как ввод данных. При анализе данных и повторном отображении его в Firefox появляется этот символ . Когда я сравниваю его с записью БД, он выглядит как пространство (ничего особенного). Я использую все настройки PHP / MySQL по умолчанию.
Выполнение var_dump или print_r тоже не помогает.
Есть предположения?
Символ:
ОБНОВИТЬ:
Хорошо, я нашел персонажа, который вызывает проблему
–
Не путать с
–
(Дефис).
Символом является ХАРАКТЕР ЗАМЕНЫ (U + FFFD) . Он используется, когда в коде UTF произошла ошибка:
FFFD ЗАМЕНА ХАРАКТЕРА
- используется для замены входящего символа, значение которого неизвестно или непредставимо в Unicode
В большинстве случаев это означает, что некоторые данные интерпретируются с кодировкой UTF, в то время как данные не кодируются с этой кодировкой, а другая.
Это символ, который недоступен в наборе символов текущего шрифта. Вам нужно будет закодировать его с помощью объекта HTML, как только вы узнаете, откуда он.
Этот символ означает, что есть код, который ваш браузер не знает, как отображать. Где-то вы устанавливаете значение символа для чего-то вне обычного диапазона символов для печати, и ваш браузер говорит вам, показывая стандартный «неизвестный» символ.
Единственный способ решить эту проблему – найти ошибку, которая в первую очередь помещает недопустимый символ в вашу строку.
Это обычная проблема при вставке текста из офисных продуктов Microsoft в html или в базу данных. Самые крупные нарушители кажутся emdash (как вы нашли) и умными цитатами. Одно из решений, которое я нашел, когда пользователи настаивают на использовании текстового редактора, который не соответствует требованиям, заключается в том, чтобы сначала вставить его во что-то вроде блокнота, чтобы лишить фирменные символы.
Очевидно, лучшим решением является просто не использовать слово для текстовых данных, предназначенных для веб-дисплея.
Добавлено только для того, чтобы предоставить некоторую информацию будущим читателям.
С уважением, Jc
Вы можете просматривать функции iconv () и mb_ *, если вы просто пытаетесь дезинформировать данные.
Наиболее вероятная причина, наблюдаемая в другом месте, заключается в том, что у вас есть проблема с кодировкой символов. PHP не очень хорошо разбирается в кодировании символов до версии 6 (имея дело с байтовыми массивами и оставляя проблемы с кодировкой более или менее до разработчика, с которыми приходится иметь дело).
Убедитесь, что вы показываете страницу в той же кодировке символов, что и ваша база данных, и убедитесь, что вы конвертируете весь пользовательский ввод в ту же кодировку символов (iconv () и mb_detect_encoding () помогут), прежде чем вставлять ее в базу данных.
О чем ты говоришь? Где вы это видели? Если на отображаемой странице в браузере вы можете сохранить файл с неправильной кодировкой. Используйте кодировку UTF или Unicode при сохранении страницы / исходного файла.
Очень смутный вопрос. Так или иначе, проверьте кодировку вашего сайта, кодировку данных вашей базы данных и так далее.
EDIT: Это ответ, потому что ошибка является несоответствием между кодировкой данных БД (возможно, на utf-8) и кодировкой webapp (возможно, на iso-8859-1). Таким образом, решение выполняется либо:
1.) резервное копирование и уничтожение БД И ТОГДА загрузите его с надлежащим кодированием. 2.) измените кодировку webapp, чтобы символы были правильно отображены.
С Уважением,
Почему бы не попробовать регулярное выражение в javascript против того, что Gumbo обозначил как «… символ … ЗАМЕНА ХАРАКТЕРА (U + FFFD)» после рендеринга веб-страницы – таким образом вам не придется связываться с БД (что вам кажется очень неохотно) и любые незначительные штрафные санкции выгружаются на сторону клиента.