Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)? / 23 сообщений из 23, страница 1 из 1
08.11.2006, 16:16
    #34113035
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Я начинающий программист в VFP 9.0 . Поетому прошу отвечать по возможности очень доступно объясняя все мелочи (я могу их не знать). СПАСИБО ЗА ВНИМАНИЕ И ОТВЕТЫ. Вопрос такой.

Перекодировал базу в 866 кодировку, с базой весь день работают из разных прог восновном из FP 2.6 и вот однажды (гдето месяц прошел после перекодировки) кодировка вернулась в 0 по необъяснимым причинам.

Вопросов два как автоматом перекодировать базы при входе в программу (чтобы не выскакивало окно с выборам кодировок а само выбиралось 866 и как-будто ничего не произошло) Пробовал команду COPY TO но ето не то.

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

Вопросы может и глупые но злободневные для меня.
...
Рейтинг: 0 / 0
08.11.2006, 16:32
    #34113121
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
FPD 2.6 иногда может снять кодировку при монопольных операциях (INDEX, PACK, ZAP)

Я утилиткой пользуюсь y-mail:
y-mail /dcp866 папка - проставляет всем DBF в папке кодовую страницу 866
...
Рейтинг: 0 / 0
08.11.2006, 16:52
    #34113195
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Программа из состава поставки FPD/VFP: CPZERO.PRG
Находиться в директории установки ФОКСА
...
Рейтинг: 0 / 0
08.11.2006, 17:19
    #34113324
Sea_Cat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Чтобы кодировка не слетала, нужно указывает для FFP2.6 в CONFIG.FP:
codepage=auto
а для VFP (особенно под WINDOWS XP):
codepage=1251
XP почему-то не всегда правильно устанавливает кодовую страницу, иногда CPCURRENT() дает 0
...
Рейтинг: 0 / 0
08.11.2006, 17:29
    #34113368
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Спасибо всем за ответы завтра буду пробовать(сення рабочий день закончился :))
...
Рейтинг: 0 / 0
08.11.2006, 21:05
    #34113932
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
кодировка таблицы храниться в 29 байте кажеться
это 30-я позиция в любом 16-м редакторе
...
Рейтинг: 0 / 0
08.11.2006, 21:25
    #34113954
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
А может, прежде чем заниматься шаманством, выяснить таки причину обнуления? Или есть какие-то основания ожидать самоустранения таких причин?
...
Рейтинг: 0 / 0
09.11.2006, 09:21
    #34114415
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Я утилиткой пользуюсь y-mail:
y-mail /dcp866 папка - проставляет всем DBF в папке кодовую страницу 866[/quot]

А можно поконкретнее куда утилиту надо копировать как запускать из программы или нет
...
Рейтинг: 0 / 0
09.11.2006, 09:26
    #34114425
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Sea_CatЧтобы кодировка не слетала, нужно указывает для FFP2.6 в CONFIG.FP:
codepage=auto
а для VFP (особенно под WINDOWS XP):
codepage=1251
XP почему-то не всегда правильно устанавливает кодовую страницу, иногда CPCURRENT() дает 0


А где ето (путь можно узнать). И еще ето я понимаю надо на каждом компьютере пользователя делать, тогда ето не выход у нас пользоватоелей около 200. Я бы хотел чтобы может так было например база с кодировкой 0 а у меня в программе она или ее курсор переводится в 866 ето помоему решает проблему.
...
Рейтинг: 0 / 0
09.11.2006, 09:28
    #34114435
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
AleksMedПрограмма из состава поставки FPD/VFP: CPZERO.PRG
Находиться в директории установки ФОКСА

Мне как раз наоборот не обнулять кодировку надо а выставить ее железно чтобы не слетала. Либо както перекодировать прямо в моей программе.
...
Рейтинг: 0 / 0
09.11.2006, 09:31
    #34114445
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
leafкодировка таблицы храниться в 29 байте кажеться
это 30-я позиция в любом 16-м редакторе

Я программист начинающий . учился не не программиста вообще поетому можно конкретнее как в 29 байт чето записать и что за 16-м редактор(пример если можно)
...
Рейтинг: 0 / 0
09.11.2006, 09:39
    #34114468
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
проходящийА может, прежде чем заниматься шаманством, выяснить таки причину обнуления? Или есть какие-то основания ожидать самоустранения таких причин?

Так етим я и мои коллеги сразу и начали заниматься. Оказалось что есть несколько причин одна из которых переиндексация таблиц, другие неизвестны. Но независимо от того что переиндексация может сбросить кодировку нужных мне баз ее делать все равно будут - поетому мне надо искать какойто обходной путь и готовиться к тому что кодировка будет слетать переодически. Например перекодировать прямо у меня в программе (всю таблицу ее курсор или по записям ) . Пробовал CPCONVERT() но она одни ероглифы переводит в другие независимо в какую кодировку запись перекодирую.
...
Рейтинг: 0 / 0
09.11.2006, 09:57
    #34114520
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
2 Alex-ZZZ:

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

Определение в каком байте записана кодовая страница, писание собственной программы по заполнению этого байта и т.п. - пустая трата времени, ибо CPZERO идет в поставке фокса и ничего кардинально отличного от нее пока ещё не написал и наврядли напишет.

Если действительно сбивается только кодовая страница файла и кодировка данных в файле действительно 866, то достаточно написать

Код: plaintext
do cpzero with 'YourDbfFile',  866 

и не изобретать велосипед.

Но я все равно еще раз порекомендую разобраться с причинами. Индексация сама по себе не сбрасывает кодовую страницу ибо она к ней имеет очень косвенное отношение и просто не имеет к этому средств.
...
Рейтинг: 0 / 0
09.11.2006, 11:02
    #34114873
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Sergey Sizov2 Alex-ZZZ:

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

Определение в каком байте записана кодовая страница, писание собственной программы по заполнению этого байта и т.п. - пустая трата времени, ибо CPZERO идет в поставке фокса и ничего кардинально отличного от нее пока ещё не написал и наврядли напишет.

Если действительно сбивается только кодовая страница файла и кодировка данных в файле действительно 866, то достаточно написать

Код: plaintext
do cpzero with 'YourDbfFile',  866 

и не изобретать велосипед.

Но я все равно еще раз порекомендую разобраться с причинами. Индексация сама по себе не сбрасывает кодовую страницу ибо она к ней имеет очень косвенное отношение и просто не имеет к этому средств.

Да Вы правы я про кашу. И так как ваш совет мне не помог (do cpzero with 'YourDbfFile', 866) я понимаю что у меня данные в таблице сохранены в какойто левой кодировке (подозреваю что 0 так как вносятся они из прог написанных под fp2.5 ). Но тогда у меня вопрос такой - как изменить кодировку данных в таблице и кодовую страницу таблицы и как ето отразится на тех кто работает с етой базой из под FP2.5 (не будут ли у них отображатся ероглифы),
и что будет с данными которые будут втосить пользователи FP2.5 в мою новую полностью перекодированную таблицу в какой кодировке будут эти данные.

И нужно ли ето вообще может достаточно менять кодовую страницу таблицы и все должно работать ( на другой работе я так и делал 1 год все работало нормально, ничего не слетало).
...
Рейтинг: 0 / 0
09.11.2006, 18:45
    #34117357
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Alex-ZZZ

А можно поконкретнее куда утилиту надо копировать как запускать из программы или нет

можешь прямо в папку с DBF скопировать. Создай ярлык, в него только ключ допиши в строку запуска y-mail.com /dcp866 и запускай. Можешь запуск вотнуть куда угодно (автозагрузка, планировщик, в свою прогу), только утилита чисто досовая, сетевых путей не понимает (типа \\server\resurs\). И в момент запуска необходимо чтобы никто DBF не держал открытой.
...
Рейтинг: 0 / 0
09.11.2006, 21:04
    #34117571
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Да Вы правы я про кашу. И так как ваш совет мне не помог (do cpzero with 'YourDbfFile', 866)
Что значит "не помог"? Не проставил кодовую страницу? Или не показались корректные данные?я понимаю что у меня данные в таблице сохранены в какойто левой кодировке (подозреваю что 0 так как вносятся они из прог написанных под fp2.5 ).
Опять каша. Что за 0-ая кодировка? Где взял? Почему решил, что fpd2.5 не знает о кодовых страницах? Сама прога настроена правильно? В config.fp у проги есть строка, начинающаяся на CODE? И если есть, то что в ней после знака равенства? AUTO? или 866? или еще что-то?
Но тогда у меня вопрос такой - как изменить кодировку данных в таблице и кодовую страницу таблицы и как ето отразится на тех кто работает с етой базой из под FP2.5 (не будут ли у них отображатся ероглифы),
и что будет с данными которые будут втосить пользователи FP2.5 в мою новую полностью перекодированную таблицу в какой кодировке будут эти данные.

И нужно ли ето вообще может достаточно менять кодовую страницу таблицы и все должно работать ( на другой работе я так и делал 1 год все работало нормально, ничего не слетало).

По моему глубокому убеждению, прежде чем начать что-то где-то изменять надо хорошенько разобраться в этом "что-то". Пока что наблюдаю гадание на кофейной гуще и попытки налепить побыстрее какую-нибудь заплатку. Хотя последние вопросы и мысли уже направляются в том направлении, которое "мне нравится"
...
Рейтинг: 0 / 0
10.11.2006, 10:28
    #34118459
OMOH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Нараод что так много текста по старой теме. Все уже было написано и сделано. Поиском пользоваться надо.

Cpzero.prg и присоедененный к проекту текстовый файл который надо обозвать CONFIG.FPW и внутри него написать одну строчку CODEPAGE=1251, и больше для счасть нечего ненадо.

Присоеденяй файл на вкладке Other проекта.
...
Рейтинг: 0 / 0
10.11.2006, 14:14
    #34119564
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
OMOHНараод что так много текста по старой теме. Все уже было написано и сделано. Поиском пользоваться надо.

Cpzero.prg и присоедененный к проекту текстовый файл который надо обозвать CONFIG.FPW и внутри него написать одну строчку CODEPAGE=1251, и больше для счасть нечего ненадо.

Присоеденяй файл на вкладке Other проекта.

Все ето я проделал и далее сделал так:

SELECT OPER.* FROM OPER INTO DBF (OPER1)
USE
USE (OPER1) ALIAS OPER1

IF CPDBF('OPER1')<>866
DO CPZERO WITH ("OPER1"), 866
ENDIF


DDD1=CPDBF('OPER')
DDD=CPDBF('OPER1')

Как я понимаю DDD должно быть равно 866 но оно = 1251 и все русские буквы в виде ерогльфов. НЕПОНЯТНО . ведь 1251 ето рус.windows.

Пробовал проставить кодовою страницу 1251 просто вручную базе (oper.dbf) -ероглифы как и с кодировкой 0.

Вопрос что в вышеуказанном коде не так почему не выставилась 866 кодировка и почему 1251 код. отображает ероглифы.
...
Рейтинг: 0 / 0
10.11.2006, 14:19
    #34119588
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
А забыл сказать в CONFIG.FPW CODEPAGE=866 установил т.е. помоему все правильно вроде проделал а все равно ероглифы и 1251 кодировка.
...
Рейтинг: 0 / 0
10.11.2006, 15:29
    #34119878
OMOH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
А ты сам хоть понял что написал.
Alex-ZZZ
Все ето я проделал и далее сделал так:

SELECT OPER.* FROM OPER INTO DBF (OPER1)
USE
USE (OPER1) ALIAS OPER1

Ты из DBF c неправильной кодировкой выбрал все иероглифы в новую DBF которая уже создется с 1251 кодировкой, т.е. иероглифы скопировальсь в правильную кодировку а не преобразовались.

И потом эту новую DBFку с 1251 кодировеой пытаешся сконвертить в 866ю кодировку
Alex-ZZZ
IF CPDBF('OPER1')<>866
DO CPZERO WITH ("OPER1"), 866
ENDIF

Ну не бред ли.

Cpzero.prg надо конвертить исходную DBF-ку.
До подключения ее к проекту.
Код: plaintext
1.
DO CPZERO WITH 'C:\OPER.DBF',  866 

Ауж потм делать с ней все что захочется.
...
Рейтинг: 0 / 0
10.11.2006, 15:58
    #34119985
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
OMOH
Cpzero.prg надо конвертить исходную DBF-ку.
До подключения ее к проекту.
Код: plaintext
1.
DO CPZERO WITH 'C:\OPER.DBF',  866 

Ауж потм делать с ней все что захочется.

К сожалению для конвертации утилитой CPZERO нужно открыть базу ексклюзивно, чего я сделать не могу так как с базой постоянно работают. Поетому я и создал новую базу. И мне примерно так в итоге и придется делать только пока не ясно как. Просто захватить базу и поменять код. стр. можно но она постоянно сбрасывается изза использования некоторых команд(например как - pack) в прогах которые тоже работают с етой базой.
...
Рейтинг: 0 / 0
11.11.2006, 11:54
    #34121087
Alex-ZZZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
Все проблема решена Всем спасибо за советы.

Выбрал такое решение:
1) Проверяю кодовую страницу базы на сети (CPDBF)
2) Eсли надо копирую ее себе (COPY TO)
3) Меняю код.стр. (CPZERO.PRG) и работаю уже с копированной базой
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
30.05.2008, 11:20
    #35345239
йцйцй
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)?
А возможно ли в случае если кодовая страница таблицы = 0 , указать драйверу работающему с таблицей(соединение настраивается в ODBC) открывать таблицу в кодировке 866?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Изменение кодовой страницы в VFP 9 ? По непонятной причине кодировка слетает (с 866 в 0)? / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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