Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Как настроить правильно кодировку для MySQL?

#mysqli #php #кодировка #mysql


Вот... Изучаю PHP. Дошла до соединения с БД.
И тут такая проблема.
В файле *.php прописываю соединение с БД. 
Затем прописываю запросы, вывожу результаты на экран. 
Все работает. Ошибок не выдает. НО! Проблема: 
русский текст не распознается. Выводит знаки ???
При этом английские буквы нормально выводит. 
Так понимаю, что проблемы с кодировкой.
Кодировку меняла и в самом php-файле, и в БД. 
На windows-1251 и на utf-8 и utf8_general_ci.
Видимо я пишу по старой версии PHP, и для PHP 5.х
этот метод не подходит. Но я учусь по книжке, там так
написано...
В сети нашла решение моей проблемы.
Но уже который час читаю, глаза уже красные,
не могу понять, что делаю не так. Если писать на основе
примеров, которые там написаны, то у меня сразу три ошибки
выдает. Вообще, как это использовать правильно?
Ничего не помогает. Что нужно сделать?
Подскажите, пожалуйста.
Код, который писала по книге такой:


Только просьба ко всем большая. Давайте не будем тут разговаривать на тему, зачем
девушке программирование. Уже общались по этому вопросу. Изучаю - значит надо. Спасибо
за понимание:)    


Ответы

Ответ 1



// Подключение mysql_connect("localhost","user","pass"); mysql_select_db("db"); mysql_set_charset("utf8") либо если используется mysqli $mysqli = new mysqli("localhost", "user", "pass", "bd"); $mysqli->set_charset("utf8") // Дальше работа с базой При создании базы так же использовать кодировку utf8_general_ci, либо перевести в нее текущию. Так же ставте заголовок charset=UTF-8 и переводите кодировку самого файла (где пишите код и вообще все файлы) в кодировку UTF-8. После понимания синтаксиса советую все делать в mysqli(нежели mysql) т.к. удобнее, есть поддержка, ну и ООП естественно, но это уже потом узнаете) Удачи.

Ответ 2



Возьмите за правило писать в кодировке UTF-8. Сохраните свои скрипты в кодировке utf-8 Отдавайте заголовки, что вы скрипт генерит контент в utf-8 После успешного соединения с БД выполните сразу же такой запрос: 'SET NAMES utf8'; использую перечисленные выше принципы, и проблемы с кодировкой нет.

Ответ 3



Ну вот "по-новому" написанный код: Соединение с БД MySQL Select вернул %d строк.\n", mysqli_num_rows($result)); $myrow = $result->fetch_array(MYSQLI_ASSOC); echo "
".$myrow['name']; echo "
".$myrow['surname']; mysqli_free_result($result); } mysqli_close($link); ?> Сейчас уже не выходит никаких ошибок. На скрине показано, что получается в результате. Еще, в самом начале в meta у меня прописано windows-1251. Если меняю на utf-8, то вообще все выходит кракозябрами. Это как можно изменить?

Комментариев нет:

Отправить комментарий