НА ГЛАВНУЮ СТРАНИЦУ

CPDBF.EXE: ИСПРАВЛЕНИЕ КОДОВОЙ СТРАНИЦЫ В DBF

Программа определяет кодовую страницу пока лишь в двух вариантах - "Russian Dos" (ASCII) и "Windows" (ANSI), однако этого вполне достаточно для корректной работы с "русскими" DBF в ArcView и MS Office.

Работа в режиме начинающего пользователя

Рекомендуются такие шаги:

1. Сделать ярлык (shortcut) запуска программы CPDBF на рабочем столе Windows;

2. Выбрать файл DBF в окне менеджера файлов (в папке с файлами, как обычно говорят);

3. Мышкой перенести файл DBF на ярлык программы и отпустить (drag and drop).

Откроется окно Ms-Dos: не пугайтесь черного цвета! Программа определит текущую кодовую страницу DBF-файла и предложит ее сменить на подходящую, например:

D:\knowhow\cpdbf\TABLE2.DBF: 2511 bytes, No codepage. Set to RusDos? (Y/N):

4. Ответьте Да (Yes) нажатием Y на клавиатуре, и программа сработает. На экране можно будет видеть подтверждение этому:

Rewriting D:\knowhow\cpdbf\TABLE2.DBF... Code page changed, press any key

5. Учтите, что "cтарый" файл программа сохраняет, меняя расширение на .OLD. Новый файл, впрочем, отличается от старого одним только байтом в заголовке. Программа меняет кодовые страницы по следующему "безопасному" алгоритму:

- cтраницу "No codepage" (ноль) предлагает сменить на "RusDos" (ASCII);

- cтраницу "RusDos" (ASCII) предлагает сменить на "Windows" (ANSI) и наоборот.

Таким образом, кодовые страницы "RusDos" и "Windows" в одном и том же DBF файле можно менять поочередно. Сменив же "нулевую" кодовую страницу на другую, "обнулить" ее снова будет непросто. Зачем так сделано? А вот зачем: программа не определяет вида кодировки по содержимому DBF-файла, она читает и меняет лишь номер кодовой страницы. Соответствие этого номера содержимому - ваша задача, руководствуйтесь при этом простыми соображениями:

- Excel ВСЕГДА обнуляет кодовую страницу DBF, и ВСЕГДА пишет содержимое в кодировке RusDos (ASCII), полагая, что DBF-формат применяется только в отсталых DOS-программах. Для того, чтобы файл правильно читался в ArcView, после Excel нужно ВСЕГДА править (устанавливать) кодовую страницу в RusDos.

- ArcView по умолчанию ставит Windows (ANSI) кодовую страницу в DBF, и пишет содержимое в этой кодировке. Менять в общем случае ничего не надо, если файлы не "испорчены", если кодировка кем-то не перепутана. В таком случае, если, например, кодовая страница стоит Windows, а ArcView все-таки не понимает русский текст, попробуйте сменить кодировку на RusDos. Сменив "случайно" Windows кодировку на RusDos, несложно вернуть ее на место - просто запустите CPDBF еще раз...

Подробнее о DBF и кодовых страницах читайте здесь.

Работа в режиме опытного пользователя

Формат запуска команды:

Cpdbf DBFILE.DBF [NewCodepage]

Где [NewCodepage] - кодовая страница - любое число между 0 и 255 (в десятичной нотации), например:

cpdbf table1.dbf 255

Предполагается, что опытный пользователь представляет, в какой кодировке заполнены его DBF-файлы, и имеет право ставить любую кодовую страницу по своему разумению, невзирая на текущие указания 29-го байта. Последнее выводится программой на экран для справки, но игнорируется, если в строке запуска параметр "NewCodepage" указан явно. Не забывайте, что если номер кодовой страницы не будет соответствовать содержимому, то скорее всего, ArcView не будет читать нормально русский (а, возможно и английский текст). Но на то и знания, чтобы экспериментировать! Следует иметь в виду, что пресловутый "29-й байт" реально стоит на 30-й позиции, так как первый байт файла обычно считают нулевым. Автор лишь подозревает, что кодовые страницы ArcView указываются этими значениями 29-го байта:

"RusDos" (ASCII) = 38 (0x26)

"Windows" (ANSI) = 57 (0x87)

Явных указаний на это, как и полной таблицы упоминаемых кодовых страниц, таких как "UNIX Latin1 ISO 8859-1" в документации по ArcView не обнаружено. Есть, правда, единственная фраза в Help, что по умолчанию в таблицы DBF пишется текст в кодировке "ANSI code page with dBASE's ANSI language ID (0x57), tagged to the file header.". Эта скудная информация дает возможность надеяться, что ArcView ориентируется на DBase стандарт указания кодовых страниц. Впрочем, для большинства случаев достаточно двух вышеуказанных вариантов, номера которых проверены на практике :)

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

Lalex