Диагностика корня проблемы.
У меня проблемы с отображением в таблице mydatabase символов латинского алфавита.
(Ä, ö, á, é, í, ...)
Это имеет все признаки несоответствия кодировки между вашими данными формы HTML, файлом PHP и MySQL. Я предполагаю, что проблема заключается в том, что ваша HTML-форма и PHP-файл отправляют данные UTF8 - поскольку в настоящее время UTF8 является методом кодирования по умолчанию - в базу данных MySQL, которая настроена (по умолчанию) для использования кодировки latin1_swedish_ci
.
Так что это одна из тех проблем «шесть из одного, полдюжины из других», где вы можете теоретически изменить кодировку в файле HTML и PHP на latin1_swedish_ci
. Но это довольно регрессивно в современном мире Интернета и в мире веб-разработки.
Поэтому я бы порекомендовал убедиться, что вся ваша цепочка данных - от формы HTML до PHP и базы данных MySQL - полностью UTF8. Как только вы получите все в UTF8, жизнь станет проще по многим причинам.
Что касается того, почему вы видите эту проблему, потому что (по умолчанию) большинство MySQL устанавливает set latin1_swedish_ci
вместо utf8_general_ci
для вновь созданных баз данных. Так что вы на правильном пути в ваших попытках исправить это.
Но есть несколько вещей, которые вам нужно сделать, чтобы получить базу данных MySQL - и сервер Datives - для правильной обработки кодировки символов и, в данном случае, кодировки UTF8.
Шаги, которые вы можете предпринять, чтобы решить проблему.
Сначала измените параметры сортировки базы данных и повторите попытку.
ALTER DATABASE [name of your database] CHARACTER SET utf8;
Если это конкретная таблица, параметры сортировки можно изменить следующим образом:
ALTER TABLE [name of your table] CONVERT TO CHARACTER SET utf8;
И если это конкретный столбец в таблице:
ALTER TABLE [name of your table] MODIFY [name of your column] [other settings] CHARACTER SET utf8 COLLATE utf8_general_ci;
Или, возможно, вы можете экспортировать текущую базу данных, создать новую базу данных с помощью этой команды и повторно импортировать данные:
CREATE DATABASE [name of your database] CHARACTER SET utf8 COLLATE utf8_general_ci;
И если вы хотите внести постоянные изменения в установку MySQL на компьютере, что вызывает проблемы, перейдите и отредактируйте my.cnf
. Следующее установит всю цепочку в UTF-8:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8