Функция 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;
}

jetsaus 27.12.2019 в 07:44

Ответы (3)


Используйте PDO на будущее, используйте mysqli_set_charset для указания желаемой кодировки после подключение к DB

Pavel.Ivatsko 31.12.2019 в 00:14

Спасибо!
Про PDO и mysqli_set_charset понятно, но фишка в том, что mysqli_set_charset можно использовать только после создания соединения с БД. А я наткнулся на ??????? в процессе подключения к БД, при обработке ошибки в процессе подключения. Т.е. подключения не произошло, нужно обработать ошибку, выдать сообщение о причинах ошибки. Если подключения не произошло, значит и mysqli_set_charset применить нет возможности ?

jetsaus 31.12.2019 в 21:00

Да, вы не можете применить без подключение, попробуйте установить кодировку базы в phpmyadmin, на главной странице PHPmyadmin пишет кодировку Server charset: UTF-8, возможно у вас другая, попробуйте её изменить, пользуйтесь встроенными обработчиками ошибок mysql https://www.php.net/manual/ru/class.mysqli.php, думаю это поможет вам решить вашу проблему, удачи

Pavel.Ivatsko 01.01.2020 в 16:41

Добавить новый ответ