Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 11
1

Кодировка MySQL

11.01.2016, 10:54. Показов 1227. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Проблема у меня такая: пытаюсь из-под PHP записать в таблицу MySQL (Server Version 5.5.44) пару столбцов на русском языке, код ниже:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    $db_hostname = 'localhost';
    $db_database = 'Skyrim';
    $db_user = 'Engineer';
    $db_password = 'qwerty';
    
    $connection = new mysqli($db_hostname, $db_user, $db_password, $db_database);
 
    echo $connection->character_set_name()."  ";    
    $connection->set_charset('cp1251');
    echo $connection->character_set_name()."  ";    
    $connection->query("INSERT INTO profiles VALUES('Что-то', 'в кодировке', 'cp1251')");
 
    if($connection->error) echo $connection->error;
    
    $connection->close();
?>
Работаю в ZendServer. Скрипт упорно отказывается записывать в базу русские символы и выдаёт ошибку:
latin1 cp1251 Incorrect string value: '\xD7\xF2\xEE-\xF2\xEE' for column 'user' at row 1
Как видно, я поменял кодировку базы с latin1 по умолчанию на кириллицу cp1251, на всякий случай проверил, поменялась. Ещё я поменял кодировку по умолчанию в php.ini с UTF-8 на windows-1251. Но не взошло. Если оставить кодировку базы по умолчанию, скрипт работает, но кириллица пишется кракозяберно, если зайти в базу из-под командной строки и проверить записанное. В чём тут может быть проблема, подскажите, пожалста...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2016, 10:54
Ответы с готовыми решениями:

MySQL и кодировка
Прошу прощения за не сильно содержательное название, но там много описывать для одной строки. К...

Кодировка в MySQL
отправляю такой запрос: &quot;INSERT INTO &quot;.$px.$utable.&quot; (login, pass, sex, bday, bmonth, byear,...

Mysql кодировка
При добавлении у меян заносит в базу ?? вопросами а если редактировать в phpmyadmin То нормально....

MySQl - кодировка
В какой кодировке указывать надо, чтоб доставло данные из майкл в русском виде а не знаками...

8
8 / 8 / 1
Регистрация: 13.07.2015
Сообщений: 28
12.01.2016, 00:42 2
А какая у вас кодировка таблицы в базе и какая кодировка файла скрипта? Должна быть одна кодировка. Лучше везде поставить UTF-8.
0
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 11
12.01.2016, 10:23  [ТС] 3
Пишу в Notepade++, кодировка сейчас utf-8.

Значит вчера я сделал так: заново создал тестовую базу с кодировкой по умолчанию UTF8, вот так:
SQL
1
CREATE DATABASE TestDB CHARACTER SET utf8 COLLATE utf8_general_ci;
Если я правильно понял, теперь все созданные таблицы должны иметь эту кодировку. Но на всякий случай, я создал таблицу testTable с одним столбцом, указав при этом её кодировку (ну и тип связи попутно):

SQL
1
CREATE TABLE testTable(testField VARCHAR(16))ENGINE InnoDB CHARACTER SET utf8;
Теперь я записываю в эту таблицу русскоязычные данные из-под командной строки mysql и проверяю, что там записалось, так:

SQL
1
2
INSERT INTO testTable VALUES('йцукенг');
SELECT * FROM testTable;
В командной строке таблица отображается корректно. И вот тогда я самоотверженно считываю из неё данные PHP скриптом и вывожу на экран:

PHP
1
2
3
$result = $connection->query("SELECT * FROM testTable");
$row = $result->fetch_array(MYSQLI_ASSOC);
echo $row['testField'];
Вот что выводится:
�련�뮫��

Теперь самое интересное. Предварительно очистив таблицу, я пишу в неё из под скрипта такие же русскоязычные данные и считываю их обратно и вывожу на экран. Всё в порядке, что записывал в таблицу, то и вывелось, без искажений.

PHP
1
2
3
4
$connection->query("INSERT INTO testTable VALUES('йцукен')");
$result = $connection->query("SELECT * FROM testTable");
$row = $result->fetch_array(MYSQLI_ASSOC);
echo $row['testField'];
Но теперь если посмотреть на таблицу из-под командной строки - SELECT * FROM testTable; - в ней сплошная кракозябра. Но которая при этом выводится из-под PHP на экран нормально. Возник чисто научный вопрос: что за херня?...

Простите, что так много написал, решил каждый шаг расписать подробно, чтоб понятно было, где я ошибся.
0
8 / 8 / 1
Регистрация: 13.07.2015
Сообщений: 28
12.01.2016, 12:28 4
попробуйте после конекта с базой данных выставить кодировку
PHP
1
mysqli_query("SET NAMES 'utf8'");
0
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 11
12.01.2016, 13:13  [ТС] 5
Та же фигня... Такое чувство, что какой-то косяк сервера.
0
8 / 8 / 1
Регистрация: 13.07.2015
Сообщений: 28
12.01.2016, 13:27 6
можете скинуть дамп базы и php скрипт? я у себя разверну, потестирую.
0
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 11
12.01.2016, 15:49  [ТС] 7
Собственно вот...
Вложения
Тип файла: rar test.rar (1.3 Кб, 3 просмотров)
0
8 / 8 / 1
Регистрация: 13.07.2015
Сообщений: 28
12.01.2016, 17:17 8
Вообщем все нормально выводится. А в консоли кракозябры потому что виндовская командная строка работает в кодировки cp866 поэтому если работаете через скрипт выставляете кодировку SET NAMES utf8 а если работаете через консоль то SET NAMES cp866

Добавлено через 1 минуту
Цитата Сообщение от eragon17 Посмотреть сообщение
SET NAMES cp866
Это для консоли, сама база у вас остается в utf8
0
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 11
13.01.2016, 08:17  [ТС] 9
Ффух. Ну слава Богу, я уже просто не знал что такое, думал что-то серьёзное. Сбасибо большое!)
0
13.01.2016, 08:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2016, 08:17
Помогаю со студенческими работами здесь

Кодировка к MySQL
&lt;?php //Передаём переменным данные форм //Присваиваем каждой форме переменную $name=$_POST;...

Кодировка денвера и mysql
Здравсвуйте, подскажите пожалуйста как настроить денвер на utf8? Раньше всегда после установки...

Кодировка в php и MySQL
Здравствуйте, уважаемые форумчане! Помогите начинающему веб-любителю разобраться с этими проклятыми...

Неверная кодировка в БД MySql
Доброй всем ночи. У меня вот такая не понятка. Создал БД в MySql, в файле php прописываю добавления...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru