Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 16:47   #1
Librarian
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию Кодировка UTF-8 при подключении к MySQL

Добрый день, пишу приложение на Delphi, админка вебпортала, база MySQL для подключения использую компонент Delphi Zeos, стандартные поля BDEdit, DBMemo и т.п. возникла необходимость мультязычности, на базах была кодировка cp1251_general_ci, символы национального алфавита других языков естественно не сохранялись, сменил кодировку баз на utf8_unicode_ci, спецсимволы сохраняются но в приложении Delphi эти символы отображаются знаками вопроса, как побороть эту проблему?
Проект писал на Delphi 7 но при добавлении мультиязычности перевёл на Delphi 2010, думал проблема в том что 7 не заточена под UTF-8, но переход на 2010 не помог.
Код объявления кодировки:
Код:
ZQuery17.SQL.Clear;
ZQuery17.SQL.Add('SET NAMES `cp1251`;');
ZQuery17.ExecSQL;
Если меняю cp1251 на utf8 Delphi 2010 выдаёт ошибку инициализированную компонентом Zeos "Row buffer width exceeded. Try using fewer or longer columns in SQL query."
Если делаю тоже в Delphi 7 ошибки нет но конечно вместо символов нац алфавита выводит что попало.
Librarian вне форума Ответить с цитированием
Старый 07.05.2012, 21:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попробуй функцию UTF8ToAnsi() при получении значений полей.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.05.2012, 04:01   #3
Librarian
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию

Не совсем понимаю как связать с этой функцией компоненты которые работают напрямую друг с другом.
Librarian вне форума Ответить с цитированием
Старый 08.05.2012, 07:48   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А вот так: Убрать нафик DB компоненты и поставить обычные Edit и Memo. И при проходе по БД в AfterScroll через ту функцию передавать этим компонентам значения из БД.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.05.2012, 12:07   #5
Librarian
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию

Конечно можно так радикально, но проект писался полтора года и переделывать тонны кода не совсем охота, может быть есть более простое и доступное решение.
Librarian вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LNK2019 при подключении .h файла (при подключении .cpp все компилится) RomanA Visual C++ 3 16.04.2012 07:47
Ошибка при подключении к MySQL: DBX Error: Driver could not be properly... SERG1990 БД в Delphi 7 20.03.2012 13:12
Ошибка при подключении <MySQL.h> Lokran C/C++ Базы данных 1 01.07.2011 13:35
Проблемы при подключении MySQL к Delphi Umen БД в Delphi 13 18.04.2011 18:06
кодировка UTF-8 nimf Общие вопросы Delphi 4 18.01.2009 19:25