Я хочу, чтобы все данные в MySQL были в кодировке UTF8.Я установил все наборы символов и параметры сортировки как UTF8 для базы данных, таблиц и столбцов.Прежде чем что-то записать в базу данных, я использую mb_detect_encoding в PHP, чтобы проверить, является ли это UTF8.Таким образом, я считаю, что все данные в кодировке UTF8.
Однако здесь возникает проблема: возьмите это слово Ríkarðsdóttir, оно корректно отображается при запросе из базы данных и отображается через PHP на веб-странице в кодировке UTF8.Если я запрашиваю эту же запись через phpMyAdmin, я получаю RÃkarà ° sdóttir.То же самое верно, если я использую командную строку MySQL.
Running SHOW VARIABLES returns to me:
character_set_client utf8,
character_set_connection utf8,
character_set_database utf8,
character_set_filesystem binary,
character_set_results utf8,
character_set_server latin1,
character_set_system utf8
Только сервер является latin1, и я нахожусь на сайте общего хостинга и не верю, что смогу это изменить.Может ли это быть проблемой?
Вот что я не понимаю: почему моя веб-страница UTF8 правильно отображает Ríkarðsdóttir, а веб-страница phpMyAdmin в кодировке UTF отображает ее как RÃkarà ° sdóttir?Действительно ли данные не кодированы в кодировке UTF8 или база данных не верит в это?Что нужно сделать, чтобы исправить это?