![]() |
|
|
![]()
|
|
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 3 Всего: 133 |
Каким образом? И что находится в БД (в какой кодировке)?
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Poseidon,
|
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Ну, снова скажу, что если юзать ADO, то с кодировкой всё ОК!
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
В БД (PostgreSQL) находися русский текст. Кодировка особого значения не имеет (в БД применяется UTF8), потому что можно послать запрос "set client_encoding to xxx", и БД будет отдавать инфу в кодировке xxx. Но Delphi любой набор символов воспринимает как win1252. Данные тянутся через zeos (Zconnection - ZQuery - DataSource - DBGrid). Ага. Только маленькое "но". Когда из таблицы с 20-ю полями я тяну через ADO 5000 строк, ADO тупит секунд 10 и выдает "недостаточно памяти", а zeos 30000 строк из той же таблицы тянет за 3 секунды и совершенно без ругани... Так что я все-таки добью zeos...
Надо будет в подпись конфиг записать - задолбался уже одно и тоже по сто раз описывать... Да и сам помнить буду лучше ))) -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: нет Всего: 18 |
Проблема только в переводе в юникод? -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
У меня складывается ощущение, что да. Вот код:
Результаты: запрашиваем koi8: ![]() запрашиваем win1251: ![]() запрашиваем utf (т. е. первые две строчки из примера закомменчены): ![]() Если сравнить результат с табличкой из статьи в Википедии (ссылка в первом посте), то возникает подозрение, что просто Delphi (или кто? Zeos?) интерпретирует все как win1252... Вот я и пытаюсь придумать, что тут можно сделать... Есть еще TNTDBGrid из набора компонетов TNT (http://www.tntware.com/). Собственно сам набор создан исключительно для поддержки юникода в Delphi. И он все показывает правильно. Но стоит денег, поэтому мне не хочется его использовать... -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: нет Всего: 18 |
Так переводи каждый полученный стринг в юникод
-------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Честно говоря, не знаю, как, а главное - зачем в юникод? Добавлено через 12 минут и 44 секунды Кстати, это, по ходу дела, глюк Delphi, потому что я сделал DBGrid доступным для редактирования, начал вводить русский текст в ячейку с клавиатуры и увидел все те же крякозябры... -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Совершенно бредовая мысль пришла в голову... Ведь с Delphi в комплекте исходники компонентов идут, может, мне DBGrid перекомпилировать и переустановить?
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Ищи др. бесплатный грид и компоненты доступа.
Кстати у JVCL куча компонентов и они бесплатны, может там есть что-нить интересное? |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Я уже вторую неделю ищу... Zeos - единственный бесплатный набор компонетов, который работает с postgre через libpq.dll напрямую. Он много чего не умеет (типа там пароль передавать в зашифрованном виде при аутентификации, коннектиться по ssl и т. п.), но зато работает быстро и стабильно. Для Delphi еще есть набор компонентов TNT, но они платные (30 евро, за 120 отдадут вместе с исходниками). В TNT есть набор гридов и прочего, я пробовал, они нормально все показывают. Только у меня триальная версия, приложение запускаешь - выскакивает окошко с предупреждением...
Это для Delphi? -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: нет Всего: 18 |
Пардон... Из юникода в вин. Да. Вот Добавлено через 3 минуты и 19 секунд ЗЫ: Превод из юникода с помощью ф-ции WideCharToString -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
ага, только это ж каждое текстовое поле нужно переводить
|
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Короче, вскрытие показало, что это баг Zeos версии 6.6.3
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |