Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение данных (MySQL - utf8) 
V
    Опции темы
Serebrus
Дата 15.6.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Привет всем.

Имеется MySQL база с кодировкой utf8_general_ci. При считывании данных из таблицы этой базы (кодировка таблицы тоже utf8_general_ci) результаты вот такие: ????? ??????
Функция Delphi UTF8Encode / Decode не помагла. Ответы этого форума на подобные вопросы (связанные с utf8) пролистал.
Что посоветуете?
PM MAIL   Вверх
Keeper89
Дата 15.6.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



UTF8ToAnsi пробовали?


--------------------
PM MAIL WWW   Вверх
Serebrus
Дата 15.6.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Да, пробовал
PM MAIL   Вверх
Keeper89
Дата 15.6.2009, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Тогда код в студию, надо смотреть кодировки и т.д.


--------------------
PM MAIL WWW   Вверх
Serebrus
Дата 15.6.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Вот пожалуйста,
чтение:
Код

with ZReadOnlyQuery1 do
 begin
  Close;
  SQL.Clear;
  SQL.Text:='select `id`,`fam`,`name` from `login` where `log`='''+login+''' and `pas`=md5('''+password+''');';
  //ShowMessage(SQL.Text);
  Open;
 end;

Результат:
Код

UserList:=ZReadOnlyQuery1fam.AsString+' '+ZReadOnlyQuery1name.AsString;
ShowMessage('Utf8ToAnsi: '+Utf8ToAnsi(UserList));

На экран:
Код

Utf8ToAnsi: ?????????? ?????

Можно ли при коннекте к базе данных, илиже при запросе задать кодировку (ну, как в php: set names...)?


Это сообщение отредактировал(а) Serebrus - 15.6.2009, 18:02
PM MAIL   Вверх
Keeper89
Дата 15.6.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



А версия Delphi? Если 2009 и выше - конвертировать не надо вообще. Если ниже 2009 - данные надо конвертировать как в запрос, так и обратно.

Насчет принудительных кодировок: можно использовать 2 запроса при создании соединения:
Код

SET NAMES 'charset_name'
SET CHARACTER SET charset_name

И перевести все, например в cp1251.

Вот ресурсы по этому вопросу:

Это сообщение отредактировал(а) Keeper89 - 15.6.2009, 18:24


--------------------
PM MAIL WWW   Вверх
Akella
Дата 15.6.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



1. Serebrus, ты вообще куда данные выводишь, где хочешь увидеть?
2. Версию Delphi, компоненты и способ доступа, визуальные компоненты местные телепаты должны угадать? Ну жди, жди...
3. Кстати, для баз данных в дельфи есть отдельная ветка форума.

Это сообщение отредактировал(а) Akella - 15.6.2009, 19:36
PM MAIL   Вверх
Serebrus
Дата 16.6.2009, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Akella, версия Delphi: 7, результат выводится в ListBox, доступ к базе данных осуществляется компонентами ZeosDbo 6.6.5
PM MAIL   Вверх
Akella
Дата 16.6.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



1. Дельфи 7 не поддерживает юникод.
2. Кодовую страницу при подключении какую указываешь?
3. Попробуй использовать сторонние компоненты с поддержкой юникода, например DevExpress или TNT, возможно, что и TMS
PM MAIL   Вверх
Serebrus
Дата 16.6.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Akella, все в порядке.
Нашел такой выход:
Код

SetNamesQuery.SQL.Text:='set names cp1251';
...
procedure TForm1.FormCreate(Sender: TObject);
begin
ZConnection1.Connected:=True;
SetNamesQuery.ExecSQL;
end;

PM MAIL   Вверх
Akella
Дата 16.6.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Serebrus @  16.6.2009,  14:07 Найти цитируемый пост)
SetNamesQuery.SQL.Text:='set names cp1251';

ну вот  smile 
PM MAIL   Вверх
Keeper89
Дата 16.6.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Цитата(Serebrus @  16.6.2009,  15:07 Найти цитируемый пост)
SetNamesQuery.SQL.Text:='set names cp1251';

Ну о чем я и говорил...


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0823 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.