Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.02.2012, 18:14
Nexby Nexby вне форума
Прохожий
 
Регистрация: 01.02.2012
Адрес: Серпухов
Сообщения: 7
Репутация: 131
По умолчанию Delphi7+MySQL=кракозябры

Связываю Delphi7 c Mysql.
Adoquery, ODBC драйвер.

База прекрасно вызывается как с этой машины, так и по сети.
Но. Отображаются лишь цифры и латиница.
Вместо кириллицы идут кракозябры, коие передать я не в состоянии.
При начальной настройке Mysql-сервера выбрал тип кодировки cp1251, с нею, если интернеты не врут, Delphi работает без проблем.
При работе с Mysql из её консоли кириллица нормально отображается.

Подскажите, как решить данную проблему?
Смена кодировки методом переконфигурирования сервера, командой set names, переустановка Mysql'я, тесты на другом компе - всё впустую, сам проблему не смог решить.
Ответить с цитированием
  #2  
Старый 01.02.2012, 19:19
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Консоль имеет кодировку OEM-866, если мне не изменяет память. Приведи скриншот кракозябр, строку установки соединения и пример запроса.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 01.02.2012, 21:08
Nexby Nexby вне форума
Прохожий
 
Регистрация: 01.02.2012
Адрес: Серпухов
Сообщения: 7
Репутация: 131
По умолчанию

Строка соединения:

Provider=MSDASQL.1;Password=please;Persist Security Info=True;User ID=root;Extended Properties="Driver=MySQL ODBC 5.1 Driver;SERVER=localhost;UID=root;PWD=please;DATABA SE=avtodor;PORT=3306";Initial Catalog=avtodor
Ответить с цитированием
  #4  
Старый 01.02.2012, 21:18
Nexby Nexby вне форума
Прохожий
 
Регистрация: 01.02.2012
Адрес: Серпухов
Сообщения: 7
Репутация: 131
По умолчанию

Кракозябры:

http://cs11506.vk.com/u11918007/92262271/x_43c7fa79.jpg

Надеюсь, ссылка откроется =)
Вместо кракозябр должно быть "Бензопилов".

Запрос: 'select * from drivers'

Аналогичные кракозябры при попытке вывода информации не только в стринггрид, но и в комбобох.

Последний раз редактировалось Nexby, 01.02.2012 в 21:28.
Ответить с цитированием
  #5  
Старый 01.02.2012, 21:52
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию

В компоненте MyDAC при подключении к базе есть свойства Charset и UseUnicode. Может быть у вас есть что-то подобное.

И не забывай перед запросом про:
Код:
('SET NAMES UTF8;')

И дело не в том, куда выводишь данные, а в том, как происходит чтение из самой базы. Т.е. ищи грабли в ADO-компонентах.
Ответить с цитированием
  #6  
Старый 01.02.2012, 22:16
Nexby Nexby вне форума
Прохожий
 
Регистрация: 01.02.2012
Адрес: Серпухов
Сообщения: 7
Репутация: 131
По умолчанию

Если посылать 'set names utf8' из Delphi, то вылетает ошибка.
Ответить с цитированием
  #7  
Старый 01.02.2012, 22:54
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Nexby
Если посылать 'set names utf8' из Delphi, то вылетает ошибка.
Можно подробней: что, как и куда вы "посылаете"?

P.S. все отлично работает (MyDAC)
Ответить с цитированием
  #8  
Старый 02.02.2012, 13:19
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Вот линк, очень похоже на представление "CP 866 -> Windows 1251".
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Этот пользователь сказал Спасибо PhoeniX за это полезное сообщение:
Nexby (06.02.2012)
  #9  
Старый 06.02.2012, 07:28
Nexby Nexby вне форума
Прохожий
 
Регистрация: 01.02.2012
Адрес: Серпухов
Сообщения: 7
Репутация: 131
По умолчанию

DJ PhoeniX, низкий тебе поклон.
Дошли вот руки до решения этой проблемы.
Нагуглил конверт из 866 в 1251, полчаса повозился с его применением и всё решилось =)

Как вспомню сколько часов я мучился, решая эту проблему со стороны MySQL'а - становится грустно.
На производительности, конечно, такое решение скажется... но если учесть, что заказчик тестовый вариант ждал позавчера...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:56.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter