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

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

🟢 18:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада

Lam

Статус: Offline
Реєстрація: 26.02.2005
Повідом.: 311
  • 🟢 18:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #1
Проблема с кодировкой

Доброе время суток, подскажите такую вещь:
Пишу на 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" - запретить шифровать данные?
 
  • 🟢 18:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #2
Кодил под C# с разными базами, но вот с DBF не приходилось. Попробуй в ConnectionString добавить charset= или codepage= и поиграться значениями 866, cp866, 1251, windows-1251.
И тут еще глянь
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
  • 🟢 18:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #3
Доброе время суток, подскажите такую вещь:
Пишу на 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.
 
  • 🟢 18:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #4
Попробуй в ConnectionString добавить charset= или codepage= и поиграться значениями 866, cp866, 1251, windows-1251.
И тут еще глянь
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
спасибо попробую, о результатах отпишу.
а кто собственно потом этот DBF будет читать?
это для нашей доблестной налоговой, вроде бы... в общем бухи ноют что им нужно в таком именно формате, а как дальше это будет работать, я если честно слабо себе представляю.
 
  • 🟢 18:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #5
это для нашей доблестной налоговой, вроде бы... в общем бухи ноют что им нужно в таком именно формате, а как дальше это будет работать, я если честно слабо себе представляю.
ясно, там царит фокспро для DOS, так что VFP не катит.
попробуй форсить 866 кодовую страницу, как предлагают, и отпиши результат.
 
  • 🟢 18:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #6
при попытке добавить к строке соединения charset=cp866 или charset="cp866 " или charset="utf8" и т.д. при попытке открыть соединение получаю ругательство на некий ISAM, а именно: "Невозможно найти устанавливаемый ISAM.".

при игрульках с codepage="ххх" - получаю такое же исключение.
 
  • 🟢 18:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7
как всегда у МС, в сообщении об ошибке написано совсем не то, что автор имел в виду
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.


хм.. а может попробовать строки конвертировать в cp866 в программе?
в принципе, я еще не совсем забыл VFP, если ничего не поможет можно попробовать спаять на нем писалку в старый формат.
 
  • 🟢 18:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #8
спасибо откликнувшимся, тему временно не развиваю, начальство сменило приоритет.... пошел гуглить по новому вопросу...
 
Назад
Зверху Знизу