Кодировка DBF...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Daniel
незнакомец
Сообщения: 5
Зарегистрирован: 11.01.2012 10:39:27

Кодировка DBF...

Сообщение Daniel »

Написал программу для создания DBF таблиц на Lazarus`e.
Далее работаю с этой таблицей в программе написанной на том же Lazarus`e.

Сейчас хочу распечатать эту DBF. Как добавить в программу функцию распечатывания, я не знаю, да и с принтером в Линуксе проблемы.
Решил конвертировать DBF во что-нибудь что прочитаеться офисом и печатать в винде на другой станции. Сконвертировал в Exel, но при открытии Exel-файла русские символы отображаються нечетаемыми символами. Как поменять кодировку, чтобы Exel-файл был читаем?

Прошу помощи у знатоков.
Заранее спасибо.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

viewtopic.php?f=5&t=4222
>Перед записью в базу данных преобразуйте строку при помощи функции UTF8ToAnsi или UTF8ToSys. И, наоборот, для отображения на форме используйте обратное преобразование AnsiToUTF8 или SysToUTF8.

Обалдеть, даже темы практически одинаково называются.
Daniel
незнакомец
Сообщения: 5
Зарегистрирован: 11.01.2012 10:39:27

Сообщение Daniel »

Проблема несколько отличаеться от Вашей, qivi, про 2 байта на символ я и так знал и предусмотрел это, а вот отображение данных из базы это другое. В линуксе программа отображает все отлично, но нет возможности печати, в винде при потытке открыть в чем либо нечитаемые символы. База уже готовая и вней даже не десятки строк.
А
qivi писал(а):viewtopic.php?f=5&t=4222>Перед записью в базу данных преобразуйте строку при помощи функции UTF8ToAnsi или UTF8ToSys. И, наоборот, для отображения на форме используйте обратное преобразование AnsiToUTF8 или SysToUTF8.

я пологаю, подходит для внесения новых записей и их дальнейшего отображения.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

Код: Выделить всё

Сконвертировал в Exel, но при открытии Exel-файла русские символы отображаються нечетаемыми символами.


Ну если Exel не понимает Utf8 сохраните в него данные в АНСИ при помощи UTF8ToAnsi.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Здесь много интересного http://wiki.freepascal.org/Lazarus_Tdbf_Tutorial/ru

viewtopic.php?t=652

а так же
dbf1.DbfFile.DbfVersion
dbf1.CodePage

Нужно изначально работать в кодировке win1251 для совместимости с виндой

Если надо на один раз, думаю openoffice можно заставить читать в utf8
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Daniel писал(а):Написал программу для создания DBF таблиц на Lazarus`e.
Далее работаю с этой таблицей в программе написанной на том же Lazarus`e.

Откройте тайну, какая злая сила заставила вас работать с dbf файлами?
Daniel
незнакомец
Сообщения: 5
Зарегистрирован: 11.01.2012 10:39:27

Сообщение Daniel »

sign писал(а):Откройте тайну, какая злая сила заставила вас работать с dbf файлами?

Учебный материал такой.... я не выбирал... 8(

Добавлено спустя 4 минуты 19 секунд:
Наверняка же можно создать чистую DBF`ку с кодировкой под винду и скопировать в нее данные из моей DBF`ки с UTF8, так чтобы потом новая DBF`ка нормально открылась в винде для печати? Если можно то как?
Или такого пути решения проблемы нет?

Добавлено спустя 6 минут 15 секунд:
Может есть способ(утилита) сконвертировать линуксовую DBF`ку c UTF8, ну предположим, в PDF, а PDF уже распечатать... Просто на данный момент приоритетней получить данные из DBF`ки в бумажном виде...
Аватара пользователя
Light13
постоялец
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Сообщение Light13 »

Хранить данные в dbf не в ansi кодировке чревато. Excel подразумевает именно эту кодировку.
Вам уже дали дельный совет: перечитать данные построчно, перекодировать и сохранить в новом файле.

Если данные не являются тайной, то приаттачте файлик - посмотрю.
Ответить