Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как определить кодировку dbf файла


Как работать с кодировкой dbf файла? - Алексей Лукин aka Arcon

DBF-файлы весьма распространены в государственном секторе. Их активно используют для переноса данных из одной базы данных в другую. Все, казалось бы, хорошо, но есть один неприятный момент. Какой? Кодировка!

Как часто приходится ломать голову из-за этих кодировок. Но ничего не поделаешь, приходится с этой неприятностью как-то справляться. Итак, что же нам делать, если мы делаем свое приложение, для работы с dbf файлом и возникли трудности с кодировкой?

В dbf файле за кодовую страницу отвечает 29-й байт. Например, значение 101 означает кодовую страницу DOS-866, 201 - Windows-1251, а значение 0 указывает, что нужно использовать системные настройки. Зная это, можно умело манипулировать кодировкой при импорте и экспорте dbf. Выставить нужную кодировку при создании файла или если кодировка содержимого не соответствует кодировке кодовой страницы, то мы легко можем менять последнюю путем записи нужного числа в 29 байт. Приведенный ниже код это демонстрирует.

FileStream fs = new FileStream(path, FileMode.Open);
 fs.Seek(29, SeekOrigin.Begin);
 fs.WriteByte(201);
 fs.Close();

Примерно таким образом мы можем и считать байт и привести его к числу, для удобства, чтобы знать, какая кодовая страница у файла.

Все, казалось бы, хорошо, вот только при подключении через Microsoft Jet Database Engine, упорно игнорируется кодовая страница. Кодировка берется из реестра, параметр DataCodePage. Найти этот параметр можно в следующих ветках реестра:

  • 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.0\Engines\Xbase'
  • 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Xbase'
  • 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase'

Если при чтении dbf мы можем конвертировать данные непосредственно в нашем приложении, то при экспорте без манипуляции со значением параметра DataCodePage никак не обойтись. По сути нам надо запомнить, что при значении "OEM" работа проходит при DOS кодировке, а при значении "ANSI" - в Windows. Если всегда экспорт должен проходить в одной кодировке, то можно сразу один раз ее выставить и забыть. Иначе нам придется перед каждой операцией менять значение реестра. Но таким образом наши пользователи всегда будут получать данные в понятном и нужном им виде.

Определения типа DBF файла и его кодировки

 
icebeerg ©   (2004-10-20 18:14) [0]

Можно ли и если можно, то как по заголовку DBF файла определить тип таблицы - dBaseIII+ или dBaseIV или dBaseV и кодировку текста хранимого в таблице cp1251(win/ansi) или cp866(dos/oem)?


 
Holy ©   (2004-10-21 09:28) [1]

http://delphi.aiq.ru/stati/24.htm
http://articles.org.ru/docum/dbfall.php

Может отсюда что поможет?


 
icebeerg ©   (2004-10-21 10:17) [2]

>Holy ©   (21.10.04 09:28) [1]
Структу заголовка файла я знаю, мне нужно собственно сабж.
Есть идея по определению кодировки, как сформулирую выдвину на обсуждение.


 
icebeerg ©   (2004-10-21 10:25) [3]

Отделное большое спасибо sigetta за письмецо.
Про кодировку вопрос снят.


dbf и кодировка

 
stas ©   (2008-10-10 11:17) [0]

Добрый день! :)
Вопрос следующий. Есть dbf файлик, нужно его проекспортировать к себе в базу. Для этого открываю его с помощью ADO+JET, пробовал и ADO+ODBC+dBASE. И вместо русских букв рисуются иероглифы. При этом просмотром по F3 в Total Comander русские буквы отображаются правильно.
И BDE открывает правильно (но BDE не желательно использовать).
Пытался менять кодовую страницу (29 байт) изначально он равнялся 03, менял на 57 и 26 - меняются только иероглифы.
Также менял ее с помощью DataBase Desctop - тоже не помогло.

Подскажите в чем может быть проблема.


 
Правильный$Вася   (2008-10-10 11:20) [1]

кодировку нужно указывать при подключении, а не шаманскими действиями с заголовками файла
тотал для просмотра не подходит, т.к. он сам на лету перекодирует
смотри HEX-редактором


 
Сергей М. ©   (2008-10-10 11:20) [2]


> BDE открывает правильно

Какой LANGDRIVER при этом фигурирует в настройках БДЕ ?


 
stas ©   (2008-10-10 11:23) [3]

Сергей М. ©   (10.10.08 11:20) [2]
"ascii" ANSI

Правильный$Вася   (10.10.08 11:20) [1]
Hex тоже правильно отображает.
А где указать кодировку при подключении?


 
Сергей М. ©   (2008-10-10 11:31) [4]

А Database Desktop показывает содержимое таблицы в нормальном виде ?


 
stas ©   (2008-10-10 11:33) [5]

Сергей М. ©   (10.10.08 11:31) [4]
нет тоже иероглифы.


 
Сергей М. ©   (2008-10-10 12:15) [6]


> тоже иероглифы

Так ведь DBD использует как раз BDE, при этом ты утверждаешь, что

> BDE открывает правильно

Как понимать тебя, Саид ?)


 
clickmaker ©   (2008-10-10 12:17) [7]

> [3] stas ©   (10.10.08 11:23)
> Сергей М. ©   (10.10.08 11:20) [2]
> "ascii" ANSI

попробуй pdox ansi cyr или какую-нибудь 866


 
Сергей М. ©   (2008-10-10 12:28) [8]


> clickmaker ©   (10.10.08 12:17) [7]

При 866-й кодировке в dbf"е вроде бы должно быть $65 , а не $03 ..


 
stas ©   (2008-10-10 13:07) [9]

clickmaker ©   (10.10.08 12:17) [7]
а где ее установить?

Сергей М. ©   (10.10.08 12:15) [6]
незнаю :), но это факт только что еще раз проверил.


 
Сергей М. ©   (2008-10-10 13:38) [10]


> stas ©   (10.10.08 13:07) [9]

Не знаю что ты там проверял, но факт остается фактом - DBD и твое приложение используют  разные языковые драйверы BDE.


 
oldman ©   (2008-10-10 13:39) [11]


> stas ©   (10.10.08 11:17)  
> Вопрос следующий. Есть dbf файлик

Чем был создан тот файлик - государственная тайна?

У DBase и FoxPro разные файлы.


 
stas ©   (2008-10-10 13:51) [12]

oldman ©   (10.10.08 13:39) [11]
Я незнаю. получаем его по клиент-банку, но если это поможет могу узнать у банка.


 
stas ©   (2008-10-10 13:53) [13]

Сергей М. ©   (10.10.08 13:38) [10]
Как это можно проверить. в bde администраторе на всех драйверах установлена кодировка "ascii" ANSI.

oldman ©   (10.10.08 13:39) [11]
Можно по заголовку определить чем создан?


 
stas ©   (2008-10-10 14:29) [14]

На одном компе из 4-х открылся с 29 байтом равным 57.
Интересно то, что компы одинаковые и системы с ПО установлены из одного образа...
Мож конечно туда что-то доставлялось,хотя непомню.


 
Сергей М. ©   (2008-10-10 14:34) [15]


> Как это можно проверить

Создать алиас, явно настроить его на использование dBASE или FoxPro-драйвера.
Через этот самый конкретный алиас открывать и у себя программно и в DBD.
Наблюдать разницу.


 
Anatoly Podgoretsky ©   (2008-10-10 15:40) [16]


> stas ©   (10.10.08 11:23) [3]
> Сергей М. ©   (10.10.08 11:20) [2]
> "ascii" ANSI

Это означает, что кодировка у данной таблицы отсутствует, какая есть на машине (Win) та и используется для работы.

> Можно по заголовку определить чем создан?

Зачем гадать? Надо узнать у создателя.


 
stas ©   (2008-10-10 17:15) [17]

Anatoly Podgoretsky ©   (10.10.08 15:40) [16]
Они не знают :). На мой вопрос чем пользуются ответили что незнают 0_O
Потом перезвонила девушка и зачем-то уточнила какой у нас процессор 0_O.
Вобщем всем спасибо разобрались stas ©   (10.10.08 14:29) [14].


 
Сергей М. ©   (2008-10-10 19:34) [18]


> На мой вопрос чем пользуются ответили что незнают

Зашибись у вас отношения - одни не знают что сделали, другие не знают что с этим сделанным дальше делать)


GIS-Lab: Изменение кодировки DBF файла

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

Неотъемлемой частью данных в формате shape является атрибутивная таблица в формате DBF. Атрибутивные данные могут храниться в разных кодировках, часто встречаются такие кодировки как Windows-1251 (CP1251) и UTF8, KOI8-R. Некоторое, особенно относительно давно появившиеся ГИС, такие как Arcview GIS 3.x, некоторые версии Mapinfo, не умеют работать с более новой кодировкой UTF8. Соответственно, часто встречается задача перевода DBF из одной кодировки в другую.

Для преобразования dbf из одной кодировки в другую можно использовать скрипт на языке Python (скачать скрипт). Эта статья описывает подготовку к работе, идею скрипта и как с ним работать.

[править] Подготовка к работе

Для работы скрипта необходимо иметь Python 2.5/2.6 и один раз скачать и установить библиотеку dbfpy. После загрузки библиотеки нужно выполнить:

python setup.py install

Правильность установки библиотеки можно проверить запустив Python и выполнив:

Если все установлено нормально, ошибок эта команда выдать не должна.

[править] Идея

В процессе работы, наш скрипт должен построчно проверять тип поля в исходном файле DBF и, если он строковый, т.е. есть вероятность того, что данные не в той кодировке, что нужно, осуществлять преобразование. Упрощенная версия скрипта на языке Python для перевода данных из кодировки в кодироввку выглядит следующим образом:

#!/usr/bin/python #--*-- encoding: utf-8 --*--   import sys from dbfpy import dbf from types import *   db = dbf.Dbf(sys.argv[1]) newDB=dbf.Dbf(sys.argv[2], new=True)   for f in db.header.fields: newDB.addField(f)   for rec in db: r=newDB.newRecord() newData=[] for f in rec.fieldData: if type(f)==StringType: f=unicode(f,'utf-8') f=f.encode('windows-1251') newData.append(f) r.fieldData=newData r.store()   db.close() newDB.close()

[править] Использование

Утилита вызывается из командной строки и принимает несколько параметров:

python dbf-encode.py -f encin -t encout -n input output
  • input — имя исходного файла dbf, который требуется преобразовать, обязателен
  • output — имя конечного файла dbf, куда будет записан результат, обязателен
  • -f (--from-code) — кодировка исходного DBF файла, не обязателен, по умолчанию UTF-8
  • -t (--to-code) — кодировка выходного DBF файла, не обязателен, по умолчанию CP-1251
  • -n (--no-subs) — переключатель, если установлен, то неизвестные символы пропускаются, если не установлен — заменяются на знаки вопроса («?»)
  • -h (--help) — справка
  • -v (--version) — версия программы

[править] Пример использования

Конвертировать adygeya-admin-a.dbf в adygeya-admin-a2.dbf из кодировки UTF-8 в кодировку CP-1251.

python dbf-encode.py -f UTF8 -t CP1251 adygeya-admin-a.dbf adygeya-admin-a2.dbf

или упрощенная запись параметров командной строки (эти кодировки и так являются кодировками на входе и выходе по умолчанию):

python dbf-encode.py adygeya-admin-a.dbf adygeya-admin-a2.dbf

[править] Ошибки конвертации

Если конвертер сталкивается с символом, который не может перекодировать, он по-умолчанию заменяет его на вопросительный знак («?»), если к строке запуска добавлен --no-subs (-n), то символ пропускается.

Если возникает другая ошибка при конвертации, конвертер выводит содержание записи на которой возникла ошибка в консоль и прекращает работу. Конечный файл создается неполным и для подмены оригинального в shape-файле непригоден.

Ошибка invalid syntax может быть связана с неправильным запуском скрипта, под Windows запуск нужно осуществлять из командного процессора («Пуск → Выполнить → cmd») после чего вводить команду указанную выше.

Скачать полную версию dbf-encode.py

[править] Ссылки по теме

Нет отображаются русские буквы в DBFshow?

Если вместо русских букв в Вашем файле отображается нечто иное и непонятное, то можно попробовать следующие варианты:
1. Нужно поменять кодировку файла. В заголовке таблицы в 29 байте хранится информация о кодировке DBF файла. DBFShow на основании этого байт использует ту или иную кодировку. Заходим в меню «Разное\Кодировка» и пробуем выбрать другую кодировку. Для русского текста это либо 1251 — Russian Windows, либо 866-Russian OEM

Меняем кодировку, смотрим на результат. Естественно файл должен быть доступен для записи. Буквы RW внизу экрана. Получаем русские буквы.

Также в программе есть возможность автоматически проставлять код кодировки при открытии файлов DBF, если у файла значение кодировки равно 0. Для этого заходим в опции DBFSHow, ставим галочку на «Использовать кодировку по умолчанию», выбираем необходимую кодировку и программа будет исправлять значение кодировки при открытии файлов.

2. Если русские буквы не отображаются в названиях колонок, как например при выгрузке из Excel, то необходимо поставить галочку в пункте «Кодировка для русских колонок (из Excel)», (рисунок выше) выбрать необходимую кодировку и заново открыть файл.

Другие разделы FAQ, которые могут быть вам интересны:

Как и чем открывать DBF-файл

DBF — это формат хранения данных, использующийся системами управления базами данных. Он появился ещё в 1980 году и в настоящее время является всё менее используемым. Тем не менее он применяется во многих бизнес и специализированных приложениях, например, в продуктах 1С, программах проектирования, инженерных приложениях. При работе с такими программами часто необходимо редактировать файл, имеющий формат DBF.

Особенности работы с DBF-файлами в Windows.

По умолчанию в Windows с ним не сопоставлено программ. До 2007 года была возможность работать с DBF в Excel, но в настоящее время его можно открыть как простую таблицу, но не сохранить в качестве DataBaseFile.

Файл, имеющий расширение DBF, состоит из следующих частей:

  • служебная (заголовок) — наименование файла, количество и структура записей;
  • информационная — массив данных, состоящий из последовательных записей.

DBF используются при работе с большими массивами информации, взаимосвязанными между собой. Каждой записи присваивается уникальный ключ, создаётся структура взаимосвязи. Как упрощённый пример, можно привести каталог товаров, где у каждого наименования есть признак, например цвет или материал. А у каждого материала или цвета есть свои характеристики, например цена, срок службы, дисконт. И таким образом, получается связанная система многоуровневых информационных баз.

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

С файлом DBF может находиться документ, имеющий расширение DBT или FPT. Это заметки к базе данных, что представляют собой текстовый документ, открывающийся в среде вместе с основным файлом.

Программы, работающие с DBF

Поскольку, как было сказано ранее, в Windows не определено сопоставление DBF конкретной программе, чтобы его открыть, необходимо:

  • Скачать специальное ПО. Выберите из многообразия программ то, что больше всего отвечает вашим целям.
  • Установить программу на компьютер.
  • В настройках программы поставить ассоциацию с файлами, имеющими расширение DBF, если это не было сделано автоматически в ходе установки.

Существуют два разных типа программ, что могут открыть формат DBF: средства программистов, которые на основании обработки баз создают утилиты для конечных пользователей, и программы для потребителей, работающих с базами данных на «бытовом» уровне.

Файл, имеющий формат DBF, можно открыть следующими программами.

Microsoft Access

Microsoft Access — система управления базами данных для обычных пользователей. Обладает удобным интерфейсом, простотой в управлении. Основными объектами Access являются:

  • таблицы;
  • запросы;
  • формы;
  • отчёты;
  • макросы и модули;
  • схема.

И также имеется встроенный язык программирования, расширяющий возможности приложения.

Visual FoxPro

Visual FoxPro — мощный инструмент, визуальная среда для создания СУБД от компании Майкрософт. Включает всё, что нужно для управления информацией:

  • средства упорядочивания таблиц;
  • средства обработки запросов;
  • возможности создания интегрированных СУБД;
  • инструменты разработки пользовательских приложений.

DBFView

DBFView — простой, но мощный инструмент открытия, редактирования, просмотра и печати. Поддерживает форматы DBF: dBase, Clipper, FoxPro, Visual FoxPro и многие другие. С помощью этого приложения можно добавлять, переименовывать, удалять, сортировать, упаковывать и просматривать записи, экспортировать в TXT и HTML, импортировать и экспортировать в Excel, а также конвертировать формат DBF в CSV и XLS-файлы.

DBF Viewer Plus

DBF Viewer Plus — не требующий установки простой редактор для работы с разными форматами DBF, включая dBase, Clipper, Foxpro. Позволяет открывать, просматривать данные, отфильтровывать записи, печать и предпросмотр таблиц, редактировать, добавлять и удалять записи, осуществлять расширенный поиск, создавать файлы, выполнять экспорт документов в форматы CSV, PDF, XLS, RTF, WKS, XML, HTML.

DBF Commander Professional

DBF Commander Professional — профессиональное средство редактирования и просмотра с поддержкой SQL-запросов.

Этот инструмент позволяет:

  • просматривать, создавать, редактировать, печатать DataBaseFile;
  • просматривать, редактировать и печатать структуру;
  • изменять кодировку;
  • поиск и замена с учётом регистра и частичными вхождениями;
  • экспорт в CSV, XLS, XML, HTML;
  • импорт из XML и CSV;
  • фильтрация записей и множественная сортировка;
  • подсчёт статистики;
  • работа с SQL;
  • поддержка командной строки и многие другие функции.

Таковы некоторые средства работы с файлами, имеющими формат DBF. Если вам нужно просто просмотреть содержимое, то скачайте одну из простых утилит с удобным интерфейсом. Если же планируете заниматься программированием и разработкой в среде управления базами данных, то приобретите профессиональный программный пакет с широким функционалом.

DBF Encoding - Кодовые страницы, поддерживаемые DBF Commander

Кодовая страница файла DBF может принимать одно из следующих значений:

Кодировки Windows:

  • 874 Тайский Windows
  • 932 Японская Windows
  • 936 Китайский (КНР, Сингапур) Windows
  • 949 Корейская Windows
  • 950 Китайский (САР Гонконг, Тайвань) Windows
  • 1250 Восточноевропейская Windows
  • 1251 Русская Windows
  • 1252 Окна ANSI
  • 1253 Греческая Windows
  • 1254 Турецкая Windows
  • 1255 Еврейский Windows
  • 1256 Арабский Windows

Кодировки MS-DOS:

  • 437 Ед.С. MS-DOS
  • 620 Мазовецкое воеводство (польское) MS-DOS
  • 737 Греческий MS-DOS (437G)
  • 850 Международный MS-DOS
  • 852 Восточноевропейская MS-DOS
  • 857 Турецкий MS-DOS
  • 861 Исландский MS-DOS
  • 865 Скандинавский MS-DOS
  • 866 Русский MS-DOS
  • 895 Каменицкий (Чешский) MS-DOS

Чтобы установить новую кодовую страницу для файла DBF , используйте команду «Установить кодовую страницу».

Вы также можете преобразовать файл DBF в кодировку UTF-8 (и наоборот, преобразовать файл UTF-8 DBF в файл ANSI DBF ).

.

r - Как открыть файл dbf в UTF-8

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

.

java - Как определить кодировку символов в файле?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

Конвертировать DBF в TXT онлайн, бесплатное изменение .dbf в .txt

Расширение файла .dbf
Категория файла документы
Описание Dbase, программное обеспечение для управления базами данных, использует расширение DBF для хранения своих стандартных файлов базы данных.Однако dbase - не единственная программа для работы с базами данных, совместимая с файлами DBF, поскольку другие программы «xBASE» также поддерживают этот формат файла. DBF приобрел популярность, потому что его структура проста для понимания, а также ранее была принята сообществом баз данных.
Технические характеристики DBF-файл содержит несколько наборов данных, которые хранятся и организованы в массивы. Он используется в dBASE II как формат файла.Кроме того, он использовался в следующих версиях dBASE III, III + и IV. DBF-файл - один из самых ранних файлов базы данных, имеющих заголовок. Заголовок делает программу незнакомой со структурой данных прочитанного DBF файла. Однако его можно использовать в Microsoft Excel OpenOffice Calc и некоторых других программах.
Программы

Microsoft Access 2016

Microsoft Excel 2016

Microsoft Visual FoxPro

Corel Quattro Pro X7

Apache OpenOffice

HiBase Group DBF Viewer 2000

Astersoft DBF Manager

Просмотрщик DBF Plus

DBFView

Закон о Swiftpage!

Alpha Программное обеспечение Alpha Anywhere

Planamesa NeoOffice (Mac)

GTK DBF редактор (Mac и Linux)

мультисофт FlagShip (Linux)

Основная программа дБase
Разработчик дБASE
Тип MIME

приложение / база данных

Приложение

/ x-dbase

приложение / dbf

Приложение

/ x-dbf

zz-приложение / zz-winassoc-dbf

.

Как определить кодировку файла в Mac OS из командной строки

Вы можете определить кодировку файлов и набор символов через командную строку в Mac OS (и Linux) с помощью команды «файл», которая помогает получить общую и конкретную информацию о типе файла.

Это, вероятно, не будет уместным советом для многих пользователей, но если вам необходимо работать с определенным набором символов для чего-то или нужно знать, какой тип файла, кодировка или набор символов введенного элемента способ командной строки, то это поможет.

Команда file работает в Mac OS и Mac OS X, а также в Linux и многих других вариантах UNIX, что делает этот трюк полезным для скриптов и других подобных целей.

Определение кодировки файла и набора символов через командную строку в Mac OS

Базовый синтаксис выглядит следующим образом:

файл -I (входной файл)

(если это не было очевидно, это заглавная буква «i» в качестве флага в -I, а не строчная L)

Нажатие возврата с правильным именем файла в качестве входных данных покажет набор символов, например UTF-8, us-ascii, binary, 8bit и т. Д.

Например, предположим, что мы проверяем набор символов и кодировку файла с именем «text.txt», тогда синтаксис будет выглядеть следующим образом:

$ файл -I text.txt
text.txt: text / plain; charset = unknown-8bit

Где «text / plain» - тип файла, а «unknown-8bit» - кодировка файла набора символов.

Вы также можете выполнить команду file буквально для любого другого файла, будь то изображения, архивы, исполняемые файлы или что-нибудь еще, на что вы хотите указать команду.Это может быть удобно, если вы автоматизируете что-то, чтобы определить тип файла для последующего запуска соответствующей команды, возможно, после того, как файл был загружен с помощью curl, и тип архива необходимо определить перед выполнением правильной команды.

$ файл -I DownloadedFile.zip
DownloadedFile.zip: application / zip; charset = двоичный

Есть много других применений для проверки набора символов, кодировки файла и типа файла через командную строку с помощью команды «файл», а флаг -I - лишь одна из множества доступных опций.Просмотрите страницу руководства для файла, чтобы узнать больше, если вы заинтересованы, и не забудьте ознакомиться с нашими многими другими советами по работе с командной строкой (или перечислить все команды терминала, доступные на Mac, и немного повеселиться).

Знаете ли вы другой или лучший способ проверить кодировку файла и набор символов через командную строку в Mac OS? Дайте нам знать об этом в комментариях!

Связанные

.

Смотрите также