Змінюй хід війни! Допомагай ЗСУ!

Проблема с кодировкой

  • Автор теми Автор теми Lam
  • Дата створення Дата створення

Lam

Статус: Офлайн
Реєстрація: 26.02.2005
Повідом.: 311
Проблема с кодировкой

Доброе время суток, подскажите такую вещь:
Пишу на C#, задача соединиться с базой данных вычитать оттуда инфу и пересохранить в dbf. Вычитываю данные нормально, без всяких там кракозябликов и прочего, при записи в dbf - получаю кракозябликов, а именно вместо укр. буквы "i" получаю вопросительный знак. С DBF файлом соединяюсь так:
PHP:
string connectionStringDBF = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"dBASE IV\"";
результат описан выше. Пробовал через мелкомягкое "нечто" с грозным названием VisualFoxPro и его провайдером данных: "vfpoledb.1". Результат удовлетворительный на 50 процентов. т.е. буквы вроде бы как больше не крокозяблики, но вот прочитать то, что он нагадил может только этот провайдер. По всей видимости он содержимое базы данных кодирует в какой-то свой формат (причем только текст).
собственно вопрос, как при помощи jet указать тип кодировки при выполнении запроса? или "vfpoledb.1" - запретить шифровать данные?
 
Кодил под C# с разными базами, но вот с DBF не приходилось. Попробуй в ConnectionString добавить charset= или codepage= и поиграться значениями 866, cp866, 1251, windows-1251.
И тут еще глянь
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
Доброе время суток, подскажите такую вещь:
Пишу на C#, задача соединиться с базой данных вычитать оттуда инфу и пересохранить в dbf. Вычитываю данные нормально, без всяких там кракозябликов и прочего, при записи в dbf - получаю кракозябликов, а именно вместо укр. буквы "i" получаю вопросительный знак. С DBF файлом соединяюсь так:
PHP:
string connectionStringDBF = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"dBASE IV\"";
результат описан выше. Пробовал через мелкомягкое "нечто" с грозным названием VisualFoxPro и его провайдером данных: "vfpoledb.1". Результат удовлетворительный на 50 процентов. т.е. буквы вроде бы как больше не крокозяблики, но вот прочитать то, что он нагадил может только этот провайдер. По всей видимости он содержимое базы данных кодирует в какой-то свой формат (причем только текст).
собственно вопрос, как при помощи jet указать тип кодировки при выполнении запроса? или "vfpoledb.1" - запретить шифровать данные?
скажем так, до VFP указание кодировки в DBF файле не поддерживалось вообще.
в VFP кодировка указывается в заголовке файла, из-за этого и многих других вещей формат файла несколько доработан по сравнению с dBase IV.

вообще в DBF можно указывать, что строковое поле - двоичное и тогда никто его не будет перекодировать, пиши туда хоть UTF-8. только не помню с какой версии это поддерживается, щя попробую найти.

а кто собственно потом этот DBF будет читать?

такс, теоретически в формате DBF dBase IV тип Binary поддерживается, а практически экспорт в формат dBase IV заменяет Binary на Character.
 
Попробуй в ConnectionString добавить charset= или codepage= и поиграться значениями 866, cp866, 1251, windows-1251.
И тут еще глянь
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
спасибо попробую, о результатах отпишу.
а кто собственно потом этот DBF будет читать?
это для нашей доблестной налоговой, вроде бы... в общем бухи ноют что им нужно в таком именно формате, а как дальше это будет работать, я если честно слабо себе представляю.
 
это для нашей доблестной налоговой, вроде бы... в общем бухи ноют что им нужно в таком именно формате, а как дальше это будет работать, я если честно слабо себе представляю.
ясно, там царит фокспро для DOS, так что VFP не катит.
попробуй форсить 866 кодовую страницу, как предлагают, и отпиши результат.
 
при попытке добавить к строке соединения charset=cp866 или charset="cp866 " или charset="utf8" и т.д. при попытке открыть соединение получаю ругательство на некий ISAM, а именно: "Невозможно найти устанавливаемый ISAM.".

при игрульках с codepage="ххх" - получаю такое же исключение.
 
как всегда у МС, в сообщении об ошибке написано совсем не то, что автор имел в виду
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.


хм.. а может попробовать строки конвертировать в cp866 в программе?
в принципе, я еще не совсем забыл VFP, если ничего не поможет можно попробовать спаять на нем писалку в старый формат.
 
спасибо откликнувшимся, тему временно не развиваю, начальство сменило приоритет.... пошел гуглить по новому вопросу...
 
Назад
Зверху Знизу