Шаг 12 - Кодовая страница DBF

Visual FoxPro отображает данные таблицы в соответствии с кодовой страницей. По умолчанию это текущая кодовая страница Windows. Однако Вы можете принудительно указать кодовую страницу, используемую по умолчанию, в конфигурационном файле (CONFIG.FPW), подробнее "Шаг 1 - Подготовка к работе Visual FoxPro".

Кодовая страница прописывается в заголовке таблицы при создании и проверяется FoxPro при открытии. Но бывают случаи, когда кодовая страница нулевая. Нулевую кодовую страницу требуют и некоторые старые программы, которые по тем или иным причинам до сих пор используются.

Так вот, если кодовая страница нулевая, то при открытии таблицы FoxPro предложит ее выбрать:

Такое может также случиться, если таблица была создана старой версией FoxPro или того хуже Clipper. При выборе новой кодовой страницы (Select) она пропишется в заголовок, и в соответствии с ней будут отображаться данные. Если нажать Cancel, кодовая страница останется без изменения, но с отображением текста могут быть проблемы.

В ходе работы программы использование такого диалога не всегда удобно, да и может повергнуть в шок неопытного пользователя Вашей программы.

Как можно обойти это?

Кодовую страницу легко прописать вручную при наличии старых добрых DOS'овых средств. Для этого нужно просто заменить соответствующий байт.

Можно построить свою программу исключительно на использовании SQL, тогда кодовая страница вовсе не тронется, но возможно придется оперировать функциями OEMTOANSI() и ANSITOOEM() для правильного отображения текста.

Ну и наконец разработчики Microsoft думали об этом. Есть программа cpzero, которая меняет кодовую страницу (лежит в каталоге установки FoxPro ..\Tools\Cpzero). В этом случае ее нужно добавить в проект и в качестве параметра передавать номер кодовой страницы, который надо установить:

do cpzero with accounts, 866

Таким образом, проделывая такой трюк в программе до нескольких раз, можно достичь определенных результатов :-)

Вот, пожалуй, и все.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Клементьев В.А - 27.07.2000