powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Смена кодировки бд из 1251 в 866
6 сообщений из 6, страница 1 из 1
Смена кодировки бд из 1251 в 866
    #37649877
Quieteroks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Вопрос извечный, но все же повторюсь.
В основном идея та же что и в ранее поднимаемых постах.

Алгоритм работы у нас такой:
- Получаем dbf файлы
- Обрабатываем их в FoxPro9 (на этом этапе кодировка из 866 в 1251 прошла успешно)
- Сохраняем в dbf файл посредством копирования copy to file type foxplus 866 (как то так, возможно ошибся немного)

Все это делает prg программа. Но результат почему то не совсем 866 кодировка. В Excel открывается отлично. А вот при импорте этого dbf в MS SQL Server, кодировка рушится. На сервер заливает сторонняя программа, поэтому на нее повлиять не могу, и заливать необходимо именно ей, поскольку она что то далее адаптирует под себя.

Приходится производить повторное копирование для смены кодировки в старом Fox 2.6. После чего программа отлично все принимает. Кодировка как и должна быть.

Подскажите, где тут ошибка, как можно преобразовать из FoxPro9 в нормальную 866 кодировку, как это делала Fox 2.6?
...
Рейтинг: 0 / 0
Смена кодировки бд из 1251 в 866
    #37649932
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй
Код: sql
1.
copy to ... type fox2x as 866



Т.к. ты не знаешь как твоя прога-загрузчик устроена, то тут только методом научного тыка, пробуй разные варианты. На чем эта прога написана?
Сравнивал заголовки DBF которые прога нормально берет и свои?

В FPD ненормальная кодировка была. В нормальном заголовке DBF указывается кодировка, FPD ставит туда 0, т.е. не указывает кодировку. VFP - указывает как положено.
Установка 866 кодовой страницы в DBF
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
proc Set866CP
lpara tcFile
local lnH, llOk
lnH = FOPEN(tcFile, 2)
if lnH > 0
	FSEEK(lnH, 29)
	FWRITE(lnH, CHR(101))
	FCLOSE(lnH)
	llOk = .T.
endif
return llOk


Замени в коде 101 на 0 и обрабатывай свои DBF перед передачей проге.
...
Рейтинг: 0 / 0
Смена кодировки бд из 1251 в 866
    #37650136
Quieteroks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Понятия не имею как она устроена и на чем написана. Явно не на Fox.
Нет, не сравнивал, только начинаю работать с Fox... Просто в Far можно открыть для просмотра и посмотреть что в них?

Обрабатывать кодом который Вы написали? В нем что то настраивать нужно?
...
Рейтинг: 0 / 0
Смена кодировки бд из 1251 в 866
    #37650156
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QuieteroksОбрабатывать кодом который Вы написали? В нем что то настраивать нужно?
Вроде по-русски написал: замени в моем коде chr(101) на chr(0).
Приведенный код обратное делает - приводит в нормальный вид кодировку DBF от Fox 2.x.
Думаю такая обработка поможет.
...
Рейтинг: 0 / 0
Смена кодировки бд из 1251 в 866
    #37650160
Quieteroks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

А я подумал в заголовке dbf файла заменить.
Спасибо, попробуем.
...
Рейтинг: 0 / 0
Смена кодировки бд из 1251 в 866
    #37650165
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QuieteroksDima T,

А я подумал в заголовке dbf файла заменить.
Спасибо, попробуем.
Ну так мой код и меняет 30й байт в заголовке DBF :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Смена кодировки бд из 1251 в 866
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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