php удалить / идентифицировать этот символ - PullRequest
4 голосов
/ 19 февраля 2010

EDIT:

Хорошо, у меня есть некоторые данные (тонна данных), извлекаемые из таблицы БД MySQL, ничего особенного в том, как вводятся данные.При разборе данных и их повторном отображении в Firefox появляется этот символ �.Когда я сравниваю это с записью в БД, это выглядит как пробел (ничего особенного).Я использую все настройки PHP / MySQL по умолчанию.

Выполнение var_dump или print_r также не поможет.

Есть мысли?

Символ: �

ОБНОВЛЕНИЕ:

Хорошо, я нашел символ, который вызывает проблему

-

Не путать с

-

(Дефис).

Ответы [ 8 ]

12 голосов
/ 19 февраля 2010

Символ является символом ЗАМЕНА (U + FFFD) . Используется, когда в коде UTF произошла ошибка:

FFFD ЗАМЕНА ХАРАКТЕР

  • используется для замены входящего символа, значение которого неизвестно или непредставимо в Юникоде

В большинстве случаев это означает, что некоторые данные интерпретируются в кодировке UTF, тогда как данные кодируются не в этой кодировке, а в другом.

1 голос
/ 19 февраля 2010

Вы можете посмотреть на функции iconv () и mb_ *, если вы просто пытаетесь очистить данные.

Наиболее вероятная причина, наблюдаемая в других местах, заключается в том, что у вас проблема с кодировкой символов. PHP не очень хорошо справлялся с кодировкой символов до версии 6 (работа с байтовыми массивами и оставление проблем кодирования более или менее на усмотрение разработчика).

Убедитесь, что вы отображаете страницу в той же кодировке символов, что и ваша база данных, и убедитесь, что вы преобразовали весь пользовательский ввод в ту же кодировку символов (iconv () и mb_detect_encoding () помогут), прежде чем вставить ее в базы данных.

1 голос
/ 19 февраля 2010

Это распространенная проблема при вставке текста из продуктов Microsoft Office в HTML или в базу данных. Крупнейшими нарушителями, похоже, являются emdash (как вы нашли) и умные цитаты. Одно из решений, которое я нашел, когда пользователи настаивают на использовании текстового редактора, который не соответствует этим требованиям, - это сначала вставить их в нечто вроде блокнота, чтобы удалить собственные символы.

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

Добавлено только для того, чтобы предоставить некоторую информацию будущим читателям.

С уважением, Jc

1 голос
/ 19 февраля 2010

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

Единственный способ решить проблему - это найти ошибкукоторый поместил недопустимый символ в вашу строку.

1 голос
/ 19 февраля 2010

Это означает, что символ не доступен в наборе символов текущего шрифта. Вам нужно будет закодировать его с помощью HTML-сущности, как только вы поймете, откуда он.

0 голосов
/ 20 февраля 2010

Почему бы не попробовать регулярное выражение в javascript против того, что Гамбо определил как "... символ � ... ЗАМЕНА ХАРАКТЕРА (U + FFFD)" после рендеринга веб-страницы - таким образом вам не придется связываться с БДчто вы, похоже, очень неохотно делаете) и все незначительные потери производительности переносятся на клиентскую сторону.

0 голосов
/ 19 февраля 2010

О чем ты говоришь? Где ты это видел? Если он находится на отображаемой странице в браузере, возможно, вы сохранили файл с неправильной кодировкой. Используйте UTF или кодировку Unicode при сохранении файла страницы / исходного кода.

0 голосов
/ 19 февраля 2010

Действительно расплывчатый вопрос. Так или иначе, проверьте кодировку вашего сайта, кодировку данных вашей базы данных и так далее.

РЕДАКТИРОВАТЬ: Это ответ, потому что недостатком является несоответствие между кодировкой данных БД (вероятно, на utf-8) и кодировкой веб-приложения (вероятно, на iso-8859-1). Итак, решение идет либо:

1.) Резервное копирование и стирание БД, а затем загрузить его с правильной кодировкой 2.) измените кодировку веб-приложения, чтобы символы правильно отображались.

С уважением,

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