#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, то вообще все выходит кракозябрами. Это как можно изменить?
Комментариев нет:
Отправить комментарий