powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вопрос про кодовую страницу
23 сообщений из 23, страница 1 из 1
вопрос про кодовую страницу
    #32479256
Pant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отчетливо понимаю, что всем знающим людям такие вопросы надоели, но может подскажете что-нибудь...
Проект пишется в VFP 7.0, базы старые и рабочие - хранятся, редактируются и будут редактироваться в 2.6, т.е. у всех *.dbf кодовая страница 866. И, конечно, когда запускается .ехе все русские буквы становятся иероглифами.
В config.fpw прописано CODEPAGE 1251, команда CPCONVERT( ) не дает нужного результата.
Раньше вроде что-то типа ansitooem помогало (в VFP 5.0), или я путаю чего и просто торможу :) ?
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32479309
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32479383
Pant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раньше в форуме была уже ссылка на эту статью.
У меня символы другие отображаются, не такие как в статье показаны.
Видимо, мне что-то другое нужно сделать, к сожалению...
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32479409
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А собственно почитать статью влом? :)

Список символов приведен для частного случая отсутсвия ковертации из 866 в 1251, но как правило, проблема с кодовой страницей 1252. Т.е. символы-то будут другими, но решение то же самое.
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32479448
to Pant:
А Вы уверены, что у всех *.dbf кодовая страница 866?
Когда-то давно в аналогичной ситуации я использовал CPZERO.PRG, причём сначала обнулял CP, а потом устанавливал нужный код.
Можно исправить код CP непосредственно в файле таблицы. Он хранится в 30-м байте заголовка файла (т.е. 30-й байт от начала). Для кодовой страницы 1251 его значение C9 (HEX) - значения кодировок см. в FoxHelp раздел Code Page Supported by Visual FoxPro.
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32479500
Pant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я и говорю, что статья прочитана и не раз. И в системном реестре прописано CodePage 1251.

Кодовая страница у .dbf точно 866.
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32479537
Сам не пробовал, но если попробовать в Config'e сделать:

CODEPAGE=866

Вдруг заработает? Как я понял, таблицы редактируются в FP for DOS и конвертировать их в CP=1251 нельзя...
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32479554
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверить, какой именно файл конфигурации захватывает Foxpro и захватывает ли хоть какой-нибудь файл можно через функцию

SYS(2019)

Посмотри, что именно захватывает EXE при запуске. Есть ли в захватываемом файле строка CODEPAGE=1251
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32479624
Pant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
866 в конфиге ничего не дает...

.ЕХЕ захватывает именно нужный config.fpw, который хранится в ее же дирректории.

У .dbf кодовые страницы менять нельзя. Они параллельно редактируются из-под DOC.

Когда в .EXE отрабатывает функция CPCONVERT() буквы меняются, но читать все равно невозможно.
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32479861
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоть всю статью здесь заново переписывай:

1) Что возвращает CPCURRENT() (без параметра) из EXE ?
2) Есть ли нормальное отображение если запустить прогу не из EXE, а в отладке, НО с рабочими таблицами (т.е. скопировать рабочие таблицы на машину, где идет отладка) ?
3) Иероглифы во всех формах без исключения или в каких-то отдельных ? Во всех объектах формы или только в каких-то отдельных?
4) Иероглифы только для memo-полей или для обычных символьных тоже?

Я на что намекаю: все эти проблемы описаны в статье, но вероятно, Вы просто не знаете как и что надо проверить.
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32480065
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to: Pant

У меня так-же как у Вас работает десяток клиентов - FPD2.6а/866 и VFP 7.0/1251 ничего не делал абсолютно, за исключением в config.fp и config.fpw имеют ссылки на 866 и 1251 соответственно. При работе с проектом на VFP проверьте пожалуйста, чтобы все файлы программ были 1251.

Проблема еще может быть из-за операционной системы. там должно быть явно установлена Россия...
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32482761
Василий Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А когда в эксклюзиве таблицу открываешь в фоксе, он не спрашивает в какой кодировке ее открыть.
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32485239
Pant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to ВладимирМ:
CPCURRENT() (без параметра) из EXE возвращает 1252.
CPCURRENT() (без параметра) из отладки возвращает 1251.
Не нормальное отображение присутствует только в ЕХЕ. В отладке все нормально, не зависимо от того на жестком диске базы или на сервере.
Иероглифы отображаются там, где отображаются значения из данных DBF - в Grid (в полях character и memo, где есть русский), Text, Label. И во всех формах проекта.
Я на что намекаю: все эти проблемы описаны в статье, но вероятно, Вы просто не знаете как и что надо проверить. Вероятно вероятность правильности предположения - 100%.

to Sergey Ch:
Все файлы проекта 1251.
Проблема еще может быть из-за операционной системы. там должно быть явно установлена Россия... Это где именно нужно посмотреть?

to Василий Л:
При открытии таблицы в эксклюзиве кодовку не спрашивает.
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32485289
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To: Василий Л

Значит какая-то кодовая таблица там уже есть. Обнулите ее cpzero.prg
Я много раз обжигался на следующем месте - использовал FoxPro 2.6 без файла FoxPro.int - после очередного изменения таблицы без этого файла - терялась кодовая таблица... Аналогично происходило и при изменении в FPD 2.5.

To: Pant

Это зависит от Операционной системы. В Windows 2000 - Control Panel/ Regional Options / Your Locations - Russia Если Росии в списке нет то внизу добавьте Language CYRILLIC
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32485296
Pant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То Sergey Ch :

У меня Windows 98. Там, как, я понимаю, нужно смотреть в "Региональных стандартах"? Если да, то у меня стоит "Русский".
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32485323
Pant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У пользователя, где стоит Windows 2000 и не установлен VFP все идет хорошо.

На соседней машине, где тоже стоит Windows 98 и тоже установлен VFP (как у меня) те же проблемы.
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32485361
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В config.fpw должно быть

CODEPAGE=1251

А вообще, плюньте на все и скачайте отсюда библиотеку, котрая понимает только Русский язык:

http://www.amit.ru/foxpro/LIB/vfp7tdll.ZIP

Но это только к сожалению для VFP 7.0!!! размер 1,8 Mb

Что с ней было сделано - описано в FoxClub я только повторил их инструкции.

Может и поможет...
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32485478
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Сначала хотел настоять, чтобы автор еще раз проверил cpdbf(). Типа: надо посмотреть, а действительно ли таблицы маркированы 866-й кодовой страницей - или же маркировка страницы нулевая, а только данные в таблицах в 866й кодировке.

2. Попутно заметил для себя, что если уж CPCURRENT() (без параметра) из EXE возвращает 1252, а из отладки возвращает 1251, то из EXE точно не подхватывается тот config, в котором codepage = 1251.

3. А потом сам поиграл с VFP8 и открыл для себя интересное ;-).
3.0. Открывал в browse 2 таблицы, маркированные первая кодовой страницей 866, а вторая 1251, обе содержащие русские буквы. И вот что:
3.1. если среда (CPCURRENT()) = 1252, то вижу иероглифы в первой таблице (866), а со второй (1251) проблем нет.
3.2. Если среда 1251, то русские буквы в browse читаются в обеих таблицах.
3.3. А если среда 866-я, то в обеих таблицах иероглифы!

Отсюда вывод: чтобы видеть русские буквы по-русски, нужно всегда ставить страницу среды 1251.

2 ВладимирМ: Статью читал. Думал. Осталось ощущение, что чего-то не понимаю. Плакал. Пришел к выводу, что поддержка многоязыковости реализована в восьмерке (и, видимо, в семерке тоже) как-то некорректно. Ощущение, что чего-то не понимаю, не прошло.

2Pant: Все-таки не хватает EXE нужный config. Или хватает, но тогда в нем не написано "CODEPAGE=1251". А если написано, то может вместо первой латинской C русская С написана. Вот так. ;-Р
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32485538
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Загляни в форум по Windows - там недавно объясняли как 1252 приравнять к 1251
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32485807
malec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для всех полей типа Character :
repl all <поле> with oemtoansi(<поле>)
Всё :-)
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32485983
Pant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так и не понятно, в чем была проблемма.

Помогла простая переустановка Visual FoxPro. Теперь все работает просто прекрасно! Так приятно видеть русские буквы!

Всем огромнейшее спасибо!
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32486111
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Pant

До VFP6 включительно если в файле Config.FPW нет строки CODEPAGE=..., то используется текущая кодовая страница системы. Причем, это касается как этапа отладки, так и готового EXE.

А вот начиная с 7 версии все несколько по другому. На этапе отладки в этом случае по прежнему берется кодовая страница системы, а в готовом EXE принудительно используется кодовая страница 1252 (win eng) вне зависимости от кодовой страницы системы.

Если в готовом EXE Вы получили CPCURRENT()=1252, это значит, что в файле CONFIG.FPW вообще нет строки CODEPAGE=...

Это может быть, если Вы используете 2 файла конфигурации: на этапе отладки и на этапе исполнения. Причем последний Вы включили внутрь EXE (include).

В этом случае SYS(2019) изнутри EXE будет показывать, что файл CONFIG.FPW лежит в той же директории, что и сам EXE, но физически он будет расположен не "рядом", а "внутри" EXE. Если окажется, что "рядом" лежит еще один файл CONFIG.FPW, то можно легко перепутать о чем идет речь. При загрузке среды FoxPro будет использован именно тот файл, который включен внутрь EXE.
...
Рейтинг: 0 / 0
вопрос про кодовую страницу
    #32486169
Pant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to ВладимирМ:

Вы попали в самую точку. На самом деле, в проекте был включенный config со строкой CODEPAGE=AUTO. А при запуске эта ехе копировалась с сервера в дирректорию, где тоже есть config, но уже с CODEPAGE=1251.
Извиняюсь, за отнятое время. Большое спасибо.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вопрос про кодовую страницу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]