У меня возникла проблема с em dashes, которую я не смог решить. Для нашего сайта мы сохраняем текстовое содержимое в столбце «content» в базе данных MySQL, в котором иногда будут содержаться специальные символы, все из которых отображаются правильно, за исключением em emash. Любые символы em в введенном тексте превращаются в символы замены символа вопроса при печати на сайте.Ошибка только для производства: em черты не отображаются правильно
Ошибка появляется только на нашей производственной площадке (на нашем сайте разработки и промежуточном сайте, emdash визуализируется правильно), что заставляет меня полагать, что это может быть проблема с наборами символов в их соответствующих базах данных (наши базы разработки/стадии разработки размещаются на одном сервере и производятся на другом сервере). Тем не менее, столбец, содержащий текстовое содержимое, заданный utf-8 для всех баз данных. Завершение вывода в htmlspecialchars() не сработало.
Следует отметить, что когда я использовал print_r() для печати переменной, в которую я сохранял извлеченные результаты БД (для отладки), em-черты затем отображались правильно, когда они были напечатаны ниже.
Проверьте кодирования веб-страницы (от мета-тегов), PHP-скрипт кодирования файлов и кодирования драйвера MySQL, чтобы соответствовать. – Cyrbil
Вы пробовали — вместо —? –
у нас была такая же проблема с тире, получается, что пользователи копировали/вставляли из слова, которое имеет специальную тире (чуть длиннее), а кодировка mysql на производстве не принимала его. Мы решили проблему, создав функцию escape с некоторыми исключениями –