Функция mysqli_connect_error() возвращает сообщение в кодировке win-1251
Как сделать так, что бы mysqli_connect_error() возвращала сообщение в кодировке utf-8 ?
Сорри, вопрос поставлен не корректно. Точнее будет: как заставить интерпретатор выдавать сообщения в кодировке UTF-8, а не win-1251 ?
Установлен XAMPP под Винду, вся страница в utf-8, а вот текст при ошибке подключения результат выполнения mysqli_connect_error() выводится ????????
Настройки mysql на utf-8 не помогают, т.к. тестирую отсутствие подключения, mysqld остановлен.
Вот кусок кода:
//подключаемся к БД используя константы
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
// Обработка ошибки подключения к БД
if (!$db) {
echo 'Ошибка: Невозможно установить соединение с MySQL.<br>';
echo 'Код ошибки errno: ' . mysqli_connect_errno() . '<br>';
echo 'Текст ошибки error: ' . mysqli_connect_error() . '<br>';
die;
}
Ответы (3)
Используйте PDO на будущее, используйте mysqli_set_charset для указания желаемой кодировки после подключение к DB
Спасибо!
Про PDO и mysqli_set_charset понятно, но фишка в том, что mysqli_set_charset можно использовать только после создания соединения с БД. А я наткнулся на ??????? в процессе подключения к БД, при обработке ошибки в процессе подключения. Т.е. подключения не произошло, нужно обработать ошибку, выдать сообщение о причинах ошибки. Если подключения не произошло, значит и mysqli_set_charset применить нет возможности ?
Да, вы не можете применить без подключение, попробуйте установить кодировку базы в phpmyadmin, на главной странице PHPmyadmin пишет кодировку Server charset: UTF-8, возможно у вас другая, попробуйте её изменить, пользуйтесь встроенными обработчиками ошибок mysql https://www.php.net/manual/ru/class.mysqli.php, думаю это поможет вам решить вашу проблему, удачи