Вопрос или проблема
У меня есть веб-сайт на арабском языке, и на сайте отображались нечитаемые символы, такие как رسائل.
Мне удалось исправить эту проблему, изменив настройки в MariaDB 10.6.19
.
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database latin1
character_set_filesystem binary
character_set_results utf8mb4
character_set_server latin1
character_set_system utf8mb3
character_sets_dir /usr/share/mysql/charsets/
Теперь проблема в том, что я не могу прочитать базу данных в phpMyAdmin, так как арабский текст все еще отображается как искаженные символы.
Это похоже на Mojibake для “‘رسائل”. Убедитесь, что столбец в вопросе объявлен как utf8mb4. Также посмотрите https://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored для дальнейшего обсуждения и помощи.
Ответ или решение
Если вы видите искаженные символы (моиджабек, например, "رسائل") в phpMyAdmin для вашего веб-сайта на арабском языке, это может быть связано с неправильной настройкой кодировки. Чтобы исправить эту проблему, выполните следующие шаги:
-
Проверьте кодировку базы данных и таблиц:
- Убедитесь, что база данных и таблицы, в которых содержится текст на арабском языке, используют кодировку
utf8mb4
. Можно выполнить SQL-запрос, чтобы проверить текущую кодировку:SHOW CREATE DATABASE имя_вашей_базы_данных; SHOW TABLE STATUS FROM имя_вашей_базы_данных;
- Если кодировка не
utf8mb4
, измените кодировку базы данных и таблиц:ALTER DATABASE имя_вашей_базы_данных CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ALTER TABLE имя_вашей_таблицы CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- Убедитесь, что база данных и таблицы, в которых содержится текст на арабском языке, используют кодировку
-
Проверьте поле (столбец) в таблице:
- Убедитесь, что соответствующий столбец (где хранятся арабские тексты) также имеет кодировку
utf8mb4
. Для этого выполните команду:SHOW FULL COLUMNS FROM имя_вашей_таблицы;
- Если кодировка не
utf8mb4
, измените кодировку конкретного столбца:ALTER TABLE имя_вашей_таблицы MODIFY имя_столбца VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- Убедитесь, что соответствующий столбец (где хранятся арабские тексты) также имеет кодировку
-
Настройте параметры соединения:
- Убедитесь, что соединение с базой данных (например, в файле конфигурации вашего PHP-приложения) устанавливает кодировку
utf8mb4
:$mysqli->set_charset("utf8mb4");
- Убедитесь, что соединение с базой данных (например, в файле конфигурации вашего PHP-приложения) устанавливает кодировку
-
Настройте phpMyAdmin:
- Проверьте настройки конфигурационного файла
config.inc.php
phpMyAdmin и убедитесь, что они соответствуют:$cfg['DefaultCharset'] = 'utf8mb4';
- Если это не так, измените настройки и перезапустите phpMyAdmin.
- Проверьте настройки конфигурационного файла
-
Проверьте веб-сервер:
- Убедитесь, что заголовки вашего веб-сайта также содержат правильную кодировку. Добавьте следующие строки в файл
.htaccess
или конфигурацию вашего веб-сервера (например, в файле Apache):AddDefaultCharset utf-8
- Также добавьте в HTML:
<meta charset="UTF-8">
- Убедитесь, что заголовки вашего веб-сайта также содержат правильную кодировку. Добавьте следующие строки в файл
После выполнения этих шагов и обновления ваших данных, текст на арабском языке должен отображаться корректно как в phpMyAdmin, так и на вашем веб-сайте. Если проблемы остаются, возможно, потребуется проверить, как данные были сохранены в базе данных и корректно ли они были закодированы изначально.