Как кодировать кириллицу в mysql?

что происходит? 🙂
У меня есть одна проблема, и я надеюсь, что вы можете мне помочь.

Один мой друг имеет простой веб-сайт html, и я реализовал немного php; CRUD-система для статей … проблема, с которой я столкнулся, заключается в размещении и получении кириллических символов из базы данных mysql.

То, что я хочу достичь, следующее:
В основной навигации есть несколько разделенных разделов, имена которых, идентификаторы и порядок элементов, которые я хочу разместить в mysql, а затем вытягивать имена и помещать каждое имя в качестве ссылки. Имена должны быть кириллическими.

Проблема возникает, когда я, используя функцию php mysql_fetch_assoc , пытаюсь отобразить имена, которые вставляются с кириллическими символами в строке базы данных, сортировка строки – utf8_general_ci , и я заканчиваю ????? insted из оригинальных символов. Если я отправляю кириллические символы через форму отправки в mysql, это показывает что-то вроде этого.

Как я могу это решить, спасибо заранее !? 🙂

Убедитесь, что вы вызываете это после подключения к базе данных.

 mysql_query("SET NAMES UTF8"); 

Также убедитесь, что в HTML-файле установлен метатег из набора символов для UTF-8 или отправить заголовок перед выходом.

 header("Content-Type: text/html; charset=utf-8"); 

У меня была такая же проблема, пока я не закодировал столбец «Collation» в моей таблице «utf8_bin».

если его действительно mysql fetch вызывает messing, вы должны попробовать: mysql-set-charset

из документов:

Заметка:

Это предпочтительный способ изменить кодировку. Использование mysql_query () для выполнения SET NAMES .. не рекомендуется.

также убедитесь, что ваши файлы сохранены как utf8 и установите флажок iconv_set_encoding / iconv_get_encoding

Для тех, у кого есть более сложные проблемы с устаревшими обновлениями проекта от версий до PHP 5.6 и MYSQL 5.1 до PHP 7 и последней версии MySQL / Percona / MariaDB и т. Д. …

Если проект использует utf8_encode ($ value), вы можете либо попытаться удалить эту функцию из готового значения, либо использовать принятый ответ для установки кодировки UTF-8 для всех входных данных.

— ИЛИ —

Попробуйте заменить utf8_encode ($ value) на mb_convert_encoding ($ value, 'utf-8')

ПОЛЬЗОВАТЕЛИ PDO

Если вы используете PDO, здесь есть два способа установить utf8:

 $options = [ \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ]; new \PDO($dsn, $username, $passwd, $options); 

— ИЛИ —

 $dsn = 'mysql:host=localhost;charset=utf8;' new \PDO($dsn, $username, $passwd); 

Я могу подтвердить, что mb_convert_encoding ($ value, 'utf-8') в таблице SQL, используя utf8_unicode_ci, работает для кириллицы и Umlaut .