powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как MySQL + C++ + Кодировка(Кириллица)
13 сообщений из 13, страница 1 из 1
Как MySQL + C++ + Кодировка(Кириллица)
    #38268213
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Создал проект Win Form Application (MS VS 2008 C+). Предварительно создал БД на MySQL, создал таблицу, заполнил полями.
В С++ подключаюсь к БД с помощью mySqlConnection и mySqlCommand. Подключился, все норм. Хочу вывести таблицу в форме, использую dataGridView. Поля заполнены кириллицей и цифрами. Собственно отображение таблицы есть, все хорошо, но только кириллица не отображается.
Сделал вот так:
Код: plaintext
1.
2.
3.
4.
5.
mySqlConnection1->Open();
mySqlCommand1->CommandText="SET NAMES 'utf8';";
mySqlCommand1->ExecuteReader();
mySqlCommand1->CommandText="select * from liji;";
MySqlDataReader1 = mySqlCommand1->ExecuteReader();



Подскажите как сделать чтобы отображалась кириллица? В MySQL кодировка utf8
авторmysql> SHOW VARIABLES LIKE "character\_set\_database"
-> ;
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| character_set_database | utf8 |
+------------------------+-------+
1 row in set (0.32 sec)

mysql>
Спасибо.
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268282
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROkaZZZniK,

Насколько я помню, SET NAMES задает кодировку с которой работает клиент, а что там в БД не имеет значения.
А поскольку у вас Windows то на клиенте это либо ANSI (CP-1251) либо UNICODE(UTF-16 или UCS-2), в зависимости от того как вы компилируете программу.
Так что попробуйте эти два варианта (вам придется посмотреть в справке, как конкретно в mysql записваются имена этих кодировок)
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268352
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,
Спасибо за отклик. Попробовал все возможные, как бы символы меняются, но кириллица так и не отображается.
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268402
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROkaZZZniK,

Так вы проверьте какая кодировка в базе стоит. То есть, в какой кодировке вы записываете туда данные.
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268443
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков,

Я это понял. А что мне нужно проверять тогда?
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268702
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, теперь и в MySQL такая же кодировка стала. Точнее я ее наверно подпортил, как исправить кто подскажет?

авторmysql> use liji;
Database changed
mysql> select * from liji;
+--------+-------+-------+----------+-------------+----------------+
| id_lij | marka | model | rostovka | kol_sezonov | sostoyanie_lij |
+--------+-------+-------+----------+-------------+----------------+
| 1 | спорт | 2 | 160см | 2 | 5 |
| 3 | спорт | 2 | 155см | 3 | 4 |
| 4 | спорт | 1 | 165см | 3 | 5 |
| 5 | спорт | 1 | 165см | 3 | 5 |
| 6 | гроза | 2 | 160см | 1 | 5 |
+--------+-------+-------+----------+-------------+----------------+
5 rows in set (0.00 sec)

mysql> set names utf8
-> ;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE "character\_set\_database"
-> ;
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| character_set_database | utf8 |
+------------------------+-------+
1 row in set (0.32 sec)

mysql> select * from liji;
+--------+------------+-------+----------+-------------+----------------+
| id_lij | marka | model | rostovka | kol_sezonov | sostoyanie_lij |
+--------+------------+-------+----------+-------------+----------------+
| 1 | ├б┬п┬о├а├в | 2 | 160├б┬м | 2 | 5 |
| 3 | ├б┬п┬о├а├в | 2 | 155├б┬м | 3 | 4 |
| 4 | ├б┬п┬о├а├в | 1 | 165├б┬м | 3 | 5 |
| 5 | ├б┬п┬о├а├в | 1 | 165├б┬м | 3 | 5 |
| 6 | ┬г├а┬о┬з┬а | 2 | 160├б┬м | 1 | 5 |
+--------+------------+-------+----------+-------------+----------------+
5 rows in set (0.01 sec)

mysql> set names cp1251;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE "character\_set\_database";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| character_set_database | utf8 |
+------------------------+-------+
1 row in set (0.00 sec)

mysql> select * from liji;
+--------+-------+-------+----------+-------------+----------------+
| id_lij | marka | model | rostovka | kol_sezonov | sostoyanie_lij |
+--------+-------+-------+----------+-------------+----------------+
| 1 | ??о?? | 2 | 160?м | 2 | 5 |
| 3 | ??о?? | 2 | 155?м | 3 | 4 |
| 4 | ??о?? | 1 | 165?м | 3 | 5 |
| 5 | ??о?? | 1 | 165?м | 3 | 5 |
| 6 | ??оза | 2 | 160?м | 1 | 5 |
+--------+-------+-------+----------+-------------+----------------+
5 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268730
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROkaZZZniK,

Да это банально может быть потому что кодировка консоли какая-то не очень. Используйте уже HeidiSQL чтобы позырить что и как в мускуле
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268738
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZPROkaZZZniK,

Да это банально может быть потому что кодировка консоли какая-то не очень. Используйте уже HeidiSQL чтобы позырить что и как в мускуле
Как ее сделать? set names HeidiSQL??
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268750
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROkaZZZniK,

Не, это MySQL GUI клиент такой. Скачайте, подключитесь и там всё замутите :)
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268851
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ,

Установил, открыл свою БД, свои таблицы. Что дальше делать?
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38268856
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как бы вот нашел код:
авторCREATE TABLE `liji` (
`id_lij` INT(11) NOT NULL AUTO_INCREMENT,
`marka` CHAR(20) NOT NULL,
`model` CHAR(20) NOT NULL,
`rostovka` CHAR(10) NOT NULL,
`kol_sezonov` CHAR(15) NOT NULL,
`sostoyanie_lij` CHAR(25) NOT NULL,
PRIMARY KEY (`id_lij`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=7;


Это то?
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38269041
PROkaZZZniK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все проблему решил, все спасибо. Прочитал, что нужно использовать при заполнении таблицы SET NAMES cp866, так как консоль работает с данной кодировкой, это позволит адекватно записаться данным в таблицу. Удалил все таблицы, создал заново, заполнил и все))) Теперь все отлично отображается.
...
Рейтинг: 0 / 0
Как MySQL + C++ + Кодировка(Кириллица)
    #38269051
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROkaZZZniKПрочитал, что нужно использовать при заполнении таблицы SET NAMES cp866,
так как консоль работает с данной кодировкой
Вообще-то консоль работает с той кодировкой, с которой хочет пользователь... И это
необязательно 866-я.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как MySQL + C++ + Кодировка(Кириллица)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]