Почему не отображаются символы на сайте?

Ссылка скопирована
1 ответ

На хостинге, вместо смайла ???

Почему не отображаются символы на сайте?

Почему не отображаются символы на сайте?

в чем может быть дело?

<meta charset="UTF-8"> стоит
define( 'DB_CHARSET', 'utf8mb4' ); указано
AddDefaultCharset UTF-8 в htaccess есть

Дополнительные вопросы

Почему не отображаются символы на сайте?

Виктор @vhood Не забывайте отмечать решения дело в кодировке

  • Кодировке чего?
    на сайте ничего не менялось, utf8
    база так же
    в htaccess добавил AddDefaultCharset UTF-8
    вообще не знаю куда копать
  • rootnoroot, <meta charset="utf-8"> есть?
  • rootnoroot

    ничего не менялось

    то есть на хостинге было все нормально до какого-то момента? какого?

  • rootnoroot, еще надо проверить какая кодировка у файлов, которые отдают шаблон. Например, если какой-то скрипт редактировали в Windows, сохранили под CP-1251 и залили на хостинг, у файла будет CP-1251 и это может быть проблемой
  • Виктор, да стоит
    <meta charset="UTF-8">

    вот на хостинге то и не отображается
    на локальном lamp все отображается ок
    заливаю на хостинг, не отображаются

  • Виктор, через vscode все создано
    все работает на локальном сервере
    на хостинге нет
    наверное стучать хостеру, видимо там какая то шляпа с кодировкой
  • rootnoroot,

    заливаю на хостинг, не отображаются

    а раньше отображалось? Фраза "ничего не менялось" меня смущает.

  • rootnoroot,

    через vscode все создано

    да хоть через блокнот, кодировка у файлов какая? Как происходит процесс "заливаю на хостинг"?

  • Виктор, имею в виду что ни в кодировке сайта ни в кодировке базы ничего не менял при заливке на хостинг
    все проверил

    что значит раньше?

    сайт делал на локальном lamp сервере
    по окончанию работы заливаю на хостинг, дабы показать человеку
    а вот на хостинге то и не отображаются utf8 символы

  • rootnoroot,

    на сайте ничего не менялось

    значит менялось. Например, операционная система, на котороый файлы лежат.

    заливаю на хостинг

    не люблю повторять вопросы.

  • Виктор, вот сайт

    вот как он отображается на локальном сервере и как на хостинге

    Почему не отображаются символы на сайте?

    Почему не отображаются символы на сайте?

  • rootnoroot, так дело в смайлике. На хостинге в базе utfmb4?
  • Виктор, ну так же и пишу utf8

    Почему не отображаются символы на сайте?

  • Виктор, да
  • rootnoroot, при подключении к базе на хостинге utf8 указан?
  • Виктор, да
    define( 'DB_CHARSET', 'utf8mb4' );
  • rootnoroot, это не строка подключения.
  • Виктор, а о какой строке подключения речь?
    можете пример дать?
    все по дефолту в wordpress
    есть конфиг, есть htaccess с AddDefaultCharset UTF-8
  • rootnoroot, так это еще и wordopress, как много новой информации выяснилось путем допроса, неужели нельзя было качественно оформить вопрос?

    вот есть вариант решения: stackoverflow

  • Виктор, тут так же указал define('DB_COLLATE', 'utf8mb4_unicode_ci');

    результата не дает

  • rootnoroot, а в самой базе? есть же там какой-нибудь phpmyadmin, можно посмотреть кодировки таблиц
  • Виктор, Благодарю
    по ссылке что указали, сделал
    хотя не все в sql прошло, только первая строка
    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

    остальные выдавали ошибку
    так же в конфиге заменил на define( 'DB_CHARSET', 'utf8mb4_unicode_ci' );

Ответы на вопрос 0

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Артём Dev Ответ

Если вместо emoji/символа отображаются вопросительные знаки, проблема почти всегда в кодировке на одном из уровней: база данных, таблица/колонка, соединение MySQL, старые данные, шрифт или HTML-вывод. То, что в wp-config.php стоит DB_CHARSET=utf8mb4, ещё не гарантирует, что сами таблицы и колонки реально в utf8mb4.

Проверьте базу:

SHOW FULL COLUMNS FROM wp_posts LIKE 'post_content';
SHOW TABLE STATUS LIKE 'wp_posts';

SHOW FULL COLUMNS FROM wp_posts LIKE 'post_content'; SHOW TABLE STATUS LIKE 'wp_posts';

Для emoji нужна кодировка utf8mb4, а не обычная utf8. Если колонка post_content или таблица в utf8_general_ci, четырёхбайтовые символы могли уже испортиться при сохранении.

Правильная конвертация таблицы:

ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE wp_options CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE wp_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE wp_options CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Перед такими запросами обязательно сделайте бэкап базы. И проверьте версию MySQL/MariaDB: старые версии могут иметь ограничения по индексам.

Если в базе уже лежат ???, восстановить исходный emoji из этих вопросительных знаков нельзя. Нужно заново вставить символ после исправления кодировки. Поэтому проверяйте не только отображение, но и что реально хранится в базе.

Также проверьте соединение WordPress с базой. В норме WordPress сам устанавливает charset по DB_CHARSET. Но старые плагины/кастомные подключения могут делать свои SQL-запросы без правильной кодировки.

Если в базе символ сохранён правильно, но на фронте не виден, тогда смотрите CSS-шрифт. Некоторые иконки/emoji не отображаются выбранным шрифтом. Для проверки временно задайте системный fallback:

body {
    font-family: system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
}

body { font-family: system-ui, -apple-system, "Segoe UI", Arial, sans-serif; }

Итог: сначала убедитесь, что таблицы и колонки в utf8mb4, затем проверьте, не испорчены ли уже данные, и только потом смотрите HTML/CSS.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно