Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
Доброго всем времени суток !
Такой вопрос. Есть программа которая работает только с кодировкой 1252(имхо), если работать из под английской версии винды, программа работает нормально и даёт доступ к базе данных, но если установить на русскую винду - то читать данные с dbf файлов отказывается. На англ. винде если вводить данные на русском языке, то прога данные пишет в базу, но при чтении выдает "кракозябры". Дайте совет, можна ли решить такую проблему? PS Не ругайте сильно за такой вопрос. Я не програмист + еще очень молод. Заранее благодарен Всем ! ![]() |
Re: Вопрос по кодировкам | |
---|---|
of63 Сообщений: 25982 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Как Вы узнали, что база данных (или файлы dbf) в кодировке 1252?
![]() |
Re: Вопрос по кодировкам | |
---|---|
Alsim Сообщений: 3682 Откуда: Екатеринбург Дата регистрации: 17.11.2004 |
подозреваю
![]() у вас нет строки: codepage=1251 где 1251 или другое значение то что Вам нужно для счастья ![]() ![]() |
Re: Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
Ища решение проблемы, увидел статью: www.foxclub.ru После того, как скачал и записал файл FOXPRO.INT, появился доступ к базам данных. И ситуация приобрела вид, в точности как описано в статье. То есть, когда в программе пишу "Вася", записываю в базу, после чтения получаю "Аася". С чего и сделал вывод (а также посмотрев с помощью редактора в кодировках 1251 и 1252), что бд сохранена в кодировке 1251, а приложение ее читает как 1252. ![]() |
Re: Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
К сожалению с foxpro и базами dbf столкнулся впервые, поэтому совсем не понимаю роли этого файла в моем случае... 1. Если он нужен, куда его записать? 2. У меня создалось впечатление, что config.fpw нужен на этапе создания программ, баз к ним и прочее. В моем случае надо использовать уже написанную кем-то программу, а именно заставить ее нормально сохранять и потом читать информацию о клиентах на русском языке, которую она пишет в файл *.dbf. ![]() |
Re: Вопрос по кодировкам | |
---|---|
Alsim Сообщений: 3682 Откуда: Екатеринбург Дата регистрации: 17.11.2004 |
1. рядом с исполняемым файлом и файлом проекта при разработке
2. впечатление создалось обманчивое 3. foxpro.int нужен только для FPD ![]() ![]() |
Re: Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
Открывал dbf-ку с помощью vfp8.0, так вот он отображал содержимое неправильно, точно так, как моя программа. Поместил рядом с базой файл config.fpw и вписав в него CODEPAGE=1252 добился желаемого, но только для фокспро. Программа же упорно отображает данные неверно.
config.fpw есть также рядом с исполняемым файлом программы. ![]() |
Re: Вопрос по кодировкам | |
---|---|
akvvohinc Сообщений: 4551 Откуда: Москва Дата регистрации: 11.11.2008 |
Если у вас программа написана на FoxPro for DOS, то конфиг.файл по умолчанию называется config.fp, а не config.fpw. Выложите здесь какую-нибудь небольшую таблицу - вам точно скажут и версию Фокса (FPD или VFP) и кодовую страницу dbf, если она в ней указана.
![]() |
Re: Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
Присоединил
![]() |
Re: Вопрос по кодировкам | |
---|---|
Alsim Сообщений: 3682 Откуда: Екатеринбург Дата регистрации: 17.11.2004 |
? CPDBF("customer")
дает 936 кодировку. т.е. не DOS 866 и не Win 1251 ![]() ![]() |
Re: Вопрос по кодировкам | |
---|---|
Alsim Сообщений: 3682 Откуда: Екатеринбург Дата регистрации: 17.11.2004 |
при помощи cpzero.prg пометил его как 1251 и АСЯ стала Вася
![]() см вложение ![]() |
Re: Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
значит надо
не помогло (( ![]() |
Re: Вопрос по кодировкам | |
---|---|
Alsim Сообщений: 3682 Откуда: Екатеринбург Дата регистрации: 17.11.2004 |
значит надо:
1 пометить свою таблицу как 1251 (см мое вложение) 2 codepage = 1251 ![]() |
Re: Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
Да, прога его скушала, работает отлично ) Правильным ли будет решение, все нужные мне файлы пометить в 1251? P.S. С опозданием отвечаю ) Исправлено 2 раз(а). Последнее : aboda, 15.08.10 14:50 ![]() |
Re: Вопрос по кодировкам | |
---|---|
Alsim Сообщений: 3682 Откуда: Екатеринбург Дата регистрации: 17.11.2004 |
я не ясновидящий, лично я взял бы и просто попробовал.
кстати "о птичках" cpzero.prg если не знаете что это и где это, лежит в папке с установленным фоксом в папке \Tools\cpzero удачи ![]() ![]() |
Re: Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
Спасибо большое за участие и помощь, стало ясно что надо сделать и о чем много почитать!
![]() |
Re: Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
Выполняю:
И еще, где можно увидеть результат выполнения CPDBF() ![]() ![]() |
Re: Вопрос по кодировкам | |
---|---|
aboda Автор Сообщений: 10 Дата регистрации: 15.08.2010 |
Все, разобрался...
![]() |
Re: Вопрос по кодировкам | |
---|---|
akvvohinc Сообщений: 4551 Откуда: Москва Дата регистрации: 11.11.2008 |
Эта ошибка возникла из-за несоответствия кодовой страницы dbf (1251) и коллэйта PYNYIN (Simplified Chinese), прописанного в индексных тегах (в файлах cdx).
Тут уже возможны варианты дальнейших действий: 1) как поведет себя программа, если просто потереть все *.cdx файлы? Откажется работать или создаст индексы автоматически? Если создаст, то с каким коллэйтом? Снова PYNYIN или MACHINE? Кодовая страница всех dbf должна быть при этом = 0 (или исходная, но не русская). При этом, если CODEPAGE в конфиге не будет китайский (936), то программа может и выдать ошибку при попытке установить коллэйт PYNYIN тем или иным образом (SET COLLATE или INDEX ON ... COLLATE ...) 2) Есть ли в программе возможность выполнить переиндексацию таблиц? Если есть, то те же вопросы, что и в п.1. 3) Если в индексах китайский коллэйт лишь для красоты, а реально не используется, то программу видимо можно заставить нормально работать. Если же нет, то могут быть проблемы при работе с русской кодировкой, например придется строго соблюдать регистр символов, иначе возможно поиск будет происходить неверно. 4) Если в программе возможности переиндексации нет, то это можно сделать руками через Фокс, или даже в Hex-редакторе, заменив текст PYNYIN во всех тегах *.cdx файлов на нуль-байты. Цитата:Откройте в Фоксе все интересующие таблицы и в командном окне:
или
Исправлено 2 раз(а). Последнее : akvvohinc, 15.08.10 18:22 ![]() |
Re: Вопрос по кодировкам | |
---|---|
pioner-v Сообщений: 1656 Дата регистрации: 01.05.2010 |
Если Вы все файлы после обработки "оставляете" у себя, то - ответ "Да". А если после обработки необходимо "вернуть назад поставщику файлов", то - ответ тоже "Да", но затем надо файлу возвратить "родительскую" кодовую страницу. Я не использую программу CPZERO(), а программным путем меняю кодовую страницу. Вот пример кода(размещается в методе Click кнопки "Открыть"):
Переменная CdPg описана как PUBLIC. ![]() |
© 2000-2025 Fox Club  |