Ansi и DBGrid :Как правильно перекодировать?
Модератор: Модераторы
Ansi и DBGrid :Как правильно перекодировать?
Потихоньку начал осваивать Lazarus под Win XP,(до этого работал на Delphi 5), столкнулся с Unicode(UTF8). Из форума понял, что Lazarus (Win32) собран в этой кодировке и программы на нем не будут работать под Win98 и Win2000(?). У меня сервер Pervasive отдает данные в OEM/ANSI кодировке, к нему я цепляюсь через OBDConnect и все компоненты DB**** не выводят русские буквы. Пока в DBGrid вывожу текст через ф-ю AnsiToUtf8. Есть ли "стандартное" решение данной проблемы? Еще не могу толком понять действия ф-й SysToUtf8 и Utf8ToSys
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
jotto писал(а):...что Lazarus (Win32) собран в этой кодировке и программы на нем не будут работать под Win98 и Win2000(?)....
Это действительно так? Кто точно знает? В первый раз слышу.
jotto писал(а):...У меня сервер Pervasive отдает данные в OEM/ANSI кодировке, к нему я цепляюсь через OBDConnect и все компоненты DB**** не выводят русские буквы. Пока в DBGrid вывожу текст через ф-ю AnsiToUtf8. Есть ли "стандартное" решение данной проблемы?
Тут процентов двадцать пять минимум сообщений на форуме по Лазарусу про эти кодировки. ИМХО стандартного решения нет - каждый пляшет как ему удобнее. Я пошел путем "сменить кодировку БД", точнее пересоздать БД и перегнать туда данные сконвертировав в UTF8 (FireBird).
jotto писал(а):Еще не могу толком понять действия ф-й SysToUtf8 и Utf8ToSys
Для Виндуса то же самое, что и AnsiToUtf8 и в другую сторону.
- EmeraldMan
- постоялец
- Сообщения: 149
- Зарегистрирован: 16.10.2008 08:41:51
- Откуда: Белгород
- Контактная информация:
SysToUtf8 и Utf8ToSys нужны для кроссплатформенности, очень удобно если программа для разных систем компилируется.
Если кодировка в системе utf8, то они ничего не делают со строкой, если системная кодировка ansi тогда происходит перекодирование.
Добавлено спустя 4 минуты 14 секунд:
Можно попробовать в OBDCConnection'е поставить нужную CharSet.
Если кодировка в системе utf8, то они ничего не делают со строкой, если системная кодировка ansi тогда происходит перекодирование.
Добавлено спустя 4 минуты 14 секунд:
jotto писал(а):Пока в DBGrid вывожу текст через ф-ю AnsiToUtf8. Есть ли "стандартное" решение данной проблемы?
Можно попробовать в OBDCConnection'е поставить нужную CharSet.
jotto писал(а):Из форума понял, что Lazarus (Win32) собран в этой кодировке и программы на нем не будут работать под Win98 и Win2000(?).
Вы не верно поняли. Под NT системой тобиш Win2000 работать будет, а на счёт Win9x необходимо пробовать.
Спасибо всем за разъяснения. Достаточно непросто переходить на Unicode особенно учитывая многоплатформенность...
