Форум » [x]Harbour » Из 1251 в укр. DOS-кодировку » Ответить

Из 1251 в укр. DOS-кодировку

Панченко: Возникла необходимость преобразовать украинский текст из Win в DOS. Пробовал RU866, UA866, UA1125. И hb_ANSItoOEM, и hb_TRANSFORM символы 'і' и 'є' заменяют некорректно. Подскажите, как решить эту проблему? Или менять можно только вручную?

Ответов - 6

AlexMyr: Про "і" соглашусь, а "є" заменяет нормально [pre2] REQUEST HB_CODEPAGE_UA866 REQUEST HB_CODEPAGE_UA1251 FUNC main() LOCAL c_str1 := "їіє" hb_cdpSelect( "UA866" ) h1:=fcreate("ados.txt") fwrite(h1,hb_ansitooem(c_str1)) fclose(h1) ?c_str1,hb_ansitooem(c_str1) RETURN nil[/pre2] возвращает "ї?є"

Панченко: AlexMyr пишет: Про "і" соглашусь, а "є" заменяет нормально Может быть я невнимательно смотрел - спорить не буду. И все-таки, как быть с "i"? Отлавливать и перекодировать самостоятельно или есть штатные средства?

Pasha: В кодировке 1125/1251 две буквы г, а в 866 - одна, поэтому и перекодировка средствами харбора будет работать неправильно. Вторую г из 866 выбросил кажется Виктор. Дело в том, что сейчас для повторяющихся кодов в кодировке выдается предупреждение. Я эб этом не писал девелоперам, так как не анализировал, насколько критичен повтор кодов в кодировке. Но даже если добавить вторую г в UA866, вопрос с украинской i это все равно не решит, так как одному символу i в ua866 соответствуют 2 символа в ua1125/ua1251, и однозначно перекодировать их не получится. Так что в любом случае перекодировать прийдется ручками.


Панченко: Pasha пишет: в любом случае перекодировать прийдется ручками. Так и сделал.

Vladimir_K: Подскажите в каком месте делали перекодировку (для get и browse)?

Панченко: У меня все базы в кодировке 1251, программы с графическим интерфейсом. Поэтому перекодировка не нужна. Вопрос о DOS-кодировке возник в связи с экспортом данных в программу M.E.Doc (бывший BEST ZVIT +).



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