Почему не отображаются символы на сайте?
На хостинге, вместо смайла ???
в чем может быть дело?
<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
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос






Если вместо 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';
Для 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;
Перед такими запросами обязательно сделайте бэкап базы. И проверьте версию MySQL/MariaDB: старые версии могут иметь ограничения по индексам.
Если в базе уже лежат
???, восстановить исходный emoji из этих вопросительных знаков нельзя. Нужно заново вставить символ после исправления кодировки. Поэтому проверяйте не только отображение, но и что реально хранится в базе.Также проверьте соединение WordPress с базой. В норме WordPress сам устанавливает charset по
DB_CHARSET. Но старые плагины/кастомные подключения могут делать свои SQL-запросы без правильной кодировки.Если в базе символ сохранён правильно, но на фронте не виден, тогда смотрите CSS-шрифт. Некоторые иконки/emoji не отображаются выбранным шрифтом. Для проверки временно задайте системный fallback:
body { font-family: system-ui, -apple-system, "Segoe UI", Arial, sans-serif; }
Итог: сначала убедитесь, что таблицы и колонки в
utf8mb4, затем проверьте, не испорчены ли уже данные, и только потом смотрите HTML/CSS.