что происходит? 🙂
У меня есть одна проблема, и я надеюсь, что вы можете мне помочь.
Один мой друг имеет простой веб-сайт 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 .