Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Еще раз про кодировки, Только не пинайте, поиск смотрел... 
V
    Опции темы
RockClimber
Дата 14.8.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

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



Сразу скажу: Delphi 7, WinXP SP3, русская.
http://forum.vingrad.ru/topic-82093/view-a...cale/index.html - читал и пробовал, не помогает.
Проблема:
Загружаю данные в DBGrid из базы, отображаются крякозябрами...
Пробовал в запрос ставить "set client_encoding to win1251" и другие кодировки.
Если верить этой статье, то DBGrid всё время получаемые данные воспринимает как win1252. Как его от этого отучить?

P. S. Charset и шрифты менял, тоже безрезультатно...

Это сообщение отредактировал(а) RockClimber - 14.8.2008, 17:17


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Poseidon
Дата 14.8.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(RockClimber @  14.8.2008,  17:15 Найти цитируемый пост)
Загружаю данные в DBGrid из базы
Каким образом? И что находится в БД (в какой кодировке)?



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Akella
Дата 14.8.2008, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Poseidon,  smile опять будем три дня из топикстартера "вытягивать клещами по одному зубу", всмысле вытягивать инфу smile 
PM MAIL   Вверх
Данкинг
Дата 14.8.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Ну, снова скажу, что если юзать ADO, то с кодировкой всё ОК! smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
RockClimber
Дата 15.8.2008, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

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



Цитата(Poseidon @  14.8.2008,  17:48 Найти цитируемый пост)
Каким образом? И что находится в БД (в какой кодировке)?

В БД (PostgreSQL) находися русский текст. Кодировка особого значения не имеет (в БД применяется UTF8), потому что можно послать запрос "set client_encoding to xxx", и БД будет отдавать инфу в кодировке xxx. Но Delphi любой набор символов воспринимает как win1252. Данные тянутся через zeos (Zconnection - ZQuery - DataSource - DBGrid).

Цитата(Данкинг @  14.8.2008,  21:55 Найти цитируемый пост)
Ну, снова скажу, что если юзать ADO, то с кодировкой всё ОК!

Ага. Только маленькое "но". Когда из таблицы с 20-ю полями я тяну через ADO 5000 строк, ADO тупит секунд 10 и выдает "недостаточно памяти", а zeos 30000 строк из той же таблицы тянет за 3 секунды и совершенно без ругани... Так что я все-таки добью zeos...

Цитата(Akella @  14.8.2008,  19:59 Найти цитируемый пост)
опять будем три дня из топикстартера "вытягивать клещами по одному зубу"

Надо будет в подпись конфиг записать - задолбался уже одно и тоже по сто раз описывать... Да и сам помнить буду лучше )))


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
BaD_SeCt0R
Дата 15.8.2008, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


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

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



Цитата(RockClimber @  15.8.2008,  08:05 Найти цитируемый пост)
Но Delphi любой набор символов воспринимает как win1252.

Проблема только в переводе в юникод?


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
RockClimber
Дата 15.8.2008, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

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



Цитата(BaD_SeCt0R @  15.8.2008,  08:43 Найти цитируемый пост)
Проблема только в переводе в юникод?

У меня складывается ощущение, что да.
Вот код:
Код

  ZQuery1.SQL.Text:='set client_encoding to ''win1251''';
  ZQuery1.ExecSQL;
  ZQuery1.SQL.Text:='select * from data_filials';

Результаты:
запрашиваем koi8:
user posted image
запрашиваем win1251:
user posted image
запрашиваем utf (т. е. первые две строчки из примера закомменчены):
user posted image
Если сравнить результат с табличкой из статьи в Википедии (ссылка в первом посте), то возникает подозрение, что просто Delphi (или кто? Zeos?) интерпретирует все как win1252... Вот я и пытаюсь придумать, что тут можно сделать...
Есть еще TNTDBGrid из набора компонетов TNT (http://www.tntware.com/). Собственно сам набор создан исключительно для поддержки юникода в Delphi. И он все показывает правильно. Но стоит денег, поэтому мне не хочется его использовать...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
BaD_SeCt0R
Дата 15.8.2008, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


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

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



Так переводи каждый полученный стринг в юникод


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
RockClimber
Дата 15.8.2008, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

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



Цитата(BaD_SeCt0R @  15.8.2008,  09:19 Найти цитируемый пост)
Так переводи каждый полученный стринг в юникод

Честно говоря, не знаю, как, а главное - зачем в юникод?

Добавлено через 12 минут и 44 секунды
Кстати, это, по ходу дела, глюк Delphi, потому что я сделал DBGrid доступным для редактирования, начал вводить русский текст в ячейку с клавиатуры и увидел все те же крякозябры...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
RockClimber
Дата 15.8.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

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



Совершенно бредовая мысль пришла в голову... Ведь с Delphi в комплекте исходники компонентов идут, может, мне DBGrid перекомпилировать и переустановить?


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Akella
Дата 15.8.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Ищи др. бесплатный грид и компоненты доступа.
Кстати у JVCL куча компонентов и они бесплатны, может там есть что-нить интересное?

PM MAIL   Вверх
RockClimber
Дата 15.8.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

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



Цитата(Akella @  15.8.2008,  12:14 Найти цитируемый пост)
Ищи др. бесплатный грид и компоненты доступа.

Я уже вторую неделю ищу... Zeos - единственный бесплатный набор компонетов, который работает с postgre через libpq.dll напрямую. Он много чего не умеет (типа там пароль передавать в зашифрованном виде при аутентификации, коннектиться по ssl и т. п.), но зато работает быстро и стабильно. Для Delphi еще есть набор компонентов TNT, но они платные (30 евро, за 120 отдадут вместе с исходниками). В TNT есть набор гридов и прочего, я пробовал, они нормально все показывают. Только у меня триальная версия, приложение запускаешь - выскакивает окошко с предупреждением...
Цитата(Akella @  15.8.2008,  12:14 Найти цитируемый пост)
Кстати у JVCL куча компонентов и они бесплатны, может там есть что-нить интересное?

Это для Delphi?


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
BaD_SeCt0R
Дата 15.8.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


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

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



Цитата(RockClimber @  15.8.2008,  10:37 Найти цитируемый пост)
зачем в юникод?

Пардон... Из юникода в вин.

Цитата(RockClimber @  15.8.2008,  13:59 Найти цитируемый пост)
Это для Delphi?

Да. Вот

Добавлено через 3 минуты и 19 секунд
ЗЫ: Превод из юникода с помощью ф-ции WideCharToString


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Akella
Дата 18.8.2008, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



ага, только это ж каждое текстовое поле нужно переводить  smile 
PM MAIL   Вверх
RockClimber
Дата 18.8.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

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



Короче, вскрытие показало, что это баг Zeos версии 6.6.3 smile Багрепорт разработчикам послал. У меня дома стоит zeos 6.6.2, я на выходных попробовал - все работает и показывает правильно. На работе снес 6.6.3, поставил 6.6.2 и теперь кайфую  smile 


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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