![]() |
|
|
![]()
|
|
| ashtone |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 14.5.2012 Репутация: нет Всего: нет |
Вобщем пишу прогу на Visual C++ 2008... подключаю к ней базы данных MySql (использую версию 5.5)... так при выводе русского текста из базы получаю кракозябры вместо того что лежит в базе... понимаю что дело в несовпадении кодировки.. но как это исправить не пойму, уже неделю бъюсь над этой проблемой... вобщем создал 2 разные базы с 2 кодировками "cp1251" и "utf8"... это не помогло.. как решить проблему??? или может кто скинет свой пример базы, может попробовать установить похожую кодировку??
Вот вариант базы с utf8 кодировкой.. вывод текста в Visual - кракозябрами ![]() А это вариант с cp1251, тескт выводится так же... причем те же символы, вывод текста обсалютно не меняется |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
многое ещё зависит от того, как вы внесли данные. сам-то клиент mysql (командная строка) работает в кодировке cp866.
поэтому, если вы вносили данные через клиент, а смотрите в visual или вносили данные через visual, а смотрите в клиенте, то кракозябры вполне логичны |
|||
|
||||
| ashtone |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 14.5.2012 Репутация: нет Всего: нет |
Тоесть что бы у меня данные в базе лежали действительно в utf8 мне перед внесением данных в базу необходимо выполнить команду "set character_set_client=utf8;" ??? тем самым указать что данные от клиента поступают в соответствующей кодировке... а так, даже не зависимо от того что практически везде стоит utf8, данные лежат в cp866??... Данные будут поступать и при внесении из самого MySql (консоли).. и из Visual.. Данные я просматриваю через Visual... как правильно создать базу, что бы всё отображалось как надо?? Это сообщение отредактировал(а) ashtone - 25.4.2013, 15:43 |
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
точно сказать не могу (вообще, не понял, как оказался в разделе С)
обычно, внесение и чтение идёт либо оттуда, либо отсюда. к примеру, если программа заточена на работу с пользователем, то к консоли его никто не подпускает если же в общем, то для работы с базой из проги, обычно хватает указания:
чтобы нормально обозреть эти данные в клиенте, надо указать вначале работы кодировку клиента:
|
||||
|
|||||
| ashtone |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 14.5.2012 Репутация: нет Всего: нет |
Вот в том то и проблема.... "Set names cp1251" - не помогает... драйвер ODBC вообще этот запрос не потдерживает, спасался "set character_set_client=utf8;" и ему подобными, вставлял в код С++ перед открытием таблицы базы данных... это ничем не помогало.. единстенное что менялись одни кракозябры на другие.. в самой базе все отображается как надо... Вобщем от базы мне требуется только вывод данных.. не сортировки, не поиска по тексту не будет... только вот с выводом текста в Visual получается огромная проблема которая практически никак не решается.. |
||||||
|
|||||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
странное дело. я конечно в ODBC не шарю, но по логике, запрос должен прямо без лишних обработок закидываться в СУБД. может есть какая функция, позволяющая напрямую пуляться в СУБД?
|
|||
|
||||
| ashtone |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 14.5.2012 Репутация: нет Всего: нет |
Функци для обращения на прямую есть.... только вот она то и не потдерживает "Set names"... насколько я знаю "set names" это набор запросов "set character_set_client;" и подобные... поэтому кидаю в sql эти запросы, а именно: character_set_client - кодировка в которой идет запрос от клиента к серверу character_set_results - кодировка в которой отправляются ответы от сервера к клиенту character_set_connection; и устанавливаю для них нужную кодировку.... только всё безрезультатно... при смене кодировок меняются только кракозябры.. а если меняются кракозябры, значит запрос работает... Получается вся суть в правильном написании БД.. |
|||
|
||||
![]()
|
| Правила форума "C++: Базы данных" | |
|
|
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах. Благодарим за понимание. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Базы данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |