Форум » [x]Harbour » Как сохранить DBF-поле строку на чешском языке ? » Ответить

Как сохранить DBF-поле строку на чешском языке ?

Softlog86: Есть стрка на чешском языке . Нужно сохранить в текстовое поле .DBF-файла . DBF- открываю в "RU866" . Получается так что если напрямую записывать FIELDPUT( 1 , ALLTRIM(Stroka) ) а затем прочитать : cRead:=ALLTRIM(FIELDGET(1)) В некоторых случаях значения Stroka и cREAD не совпадают . Видимо коряво записываются (или не читаются) некоторые национальные символы алфавита DBF -файл только как CODEPAGE "RU866" !

Ответов - 5

Sergy: Первое, что приходит в голову - сохранить строку в виде ASCII кодов символов: "056142135015032026". Считывать через SUBSTR() по три символа, преобразуя на лету в CHR(VAL(c3)) и склеивая в строку-результат. Да, при этом строка будет в три раза длиннее оригинала, но не думаю, что это существенно. Если совсем заморочиться - использовать HEX-ASCII коды, строка будет не в три, а в два раза длиннее и гарантированно читаться. Второе - попробовать простейшую Zip/Unzip функцию для нужного поля. Третье - выяснить, на каких символах "ломается" и составить таблицу замен, использовать при сохранении и восстановлении. PS: а вообще странно. Сохраненная информация в поле обязана без изменений быть прочитана. "Национальность" кодировки используется для сортировки и UPPER()/LOWER(). У меня (DBFNTX) в нескольких местах используется хранение бинарных данных в текстовых полях (картинки, битовые значения, слегка прикрытые от посторонних глаз чаты и тп) - все восстанавливается как нужно...

Softlog86: тут другое дело . Исходные строки я получаю из полученной html-странички . Тоесть разбираю её : Читаю определенную таблицу и из неё добываю информацию : полученные строки переношу в свою таблицу . Так есть слова с национальными символами ...... А их обязательно нужно записать , а затем использовать . в тексте странички .html есть такие данные : <META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=windows-1250' /> <meta http-equiv="Content-language" content="cs" /> Может это как-то использовать ?

alkresin: А кодовая страница приложения ( установленная с помощью hb_cdpSelect() ) тоже RU866 ?


Softlog86: Приложение не использует cdpSelect .... значит тоже в CP1250 ? Всё - разобрался (вроде как) : открываю DBF с CODEPAGE "CP1250" и безо всяких перекодировок записываю и читаю правильные данные :)

Sergy: Softlog86 пишет: DBF -файл только как CODEPAGE "RU866" ! Softlog86 пишет: открываю DBF с CODEPAGE "CP1250" и безо всяких перекодировок записываю и читаю правильные данные Красавчик.



полная версия страницы