Автор | Сообщение |
|
| |
Пост N: 43
Зарегистрирован: 15.11.05
|
|
Отправлено: 23.01.08 12:04. Заголовок: Как перетащить данные из DBF в кодировке cp1251 в DBF кодировке cp866?
Есть DBF в кодировке cp1251. Все остальные (основные) базы обрабатываются в cp866. Как перетащить данные из DBF в кодировке cp1251 в DBF кодировке cp866?
|
|
|
Ответов - 7
[только новые]
|
|
|
| |
Пост N: 821
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.01.08 13:26. Заголовок: func ansitoem(srt) l..
func ansitoem(srt) local j:=len(srt) local i:=1 local ret:="" local asco:="" for i=1 to j asco:=substr(srt,i,1) if asc(asco)<128 ret+=asco elseif asc(asco)>=192 .and. asc(asco)<=239 ret+=chr(asc(asco)-64) elseif asc(asco)>=240 .and. asc(asco)<=255 ret+=chr(asc(asco)-16) else ret+="" endif next RETURN ret
|
|
|
|
| moderator
|
Пост N: 20
Зарегистрирован: 06.07.06
|
|
Отправлено: 23.01.08 17:02. Заголовок: Есть штатный способ:..
Есть штатный способ: hb_Translate( cText,"RU1251","RU866" ) Для этого должны стоять в начале программы: REQUEST HB_CODEPAGE_RU1251 REQUEST HB_CODEPAGE_RU866 А можно и так: use file1 new codepage "RU1251" use file2 new codepage "RU866" do while ! file1->(eof()) file2->Some_field := file1->Some_field file1->(dbSkip(1)) file2->(dbSkip(1)) enddo
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 23.01.08 17:13. Заголовок: Ва-у!!! Кто нас посе..
Ва-у!!! Кто нас посетил??? Сам Господ(ин) КРЕСИН!!! Без всякого ехидства ...
|
|
|
|
| |
Пост N: 822
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.01.08 18:50. Заголовок: alkresin пишет: Ест..
alkresin пишет: Виноват .....не заметил сразу что речь про Xharbour
|
|
|
|
| moderator
|
Пост N: 21
Зарегистрирован: 06.07.06
|
|
Отправлено: 23.01.08 22:45. Заголовок: Почему про xHarbour ..
Почему про xHarbour ? Это штатные средства в обеих ветках, а появились впервые как раз в Harbour ( сам делал :) ).
|
|
|
|
| |
Пост N: 163
Зарегистрирован: 08.04.06
|
|
Отправлено: 25.01.08 17:08. Заголовок: А я в своё время (ещ..
А я в своё время (ещё для Клиппера) сделал функцию сам (чтобы перекодировать напечатанное в файл для последующего открытия в Word'е и т.п.). Для Harbour'а зато ничего дописывать/переписывать не пришлось. Не знаю, как вышеприведённые варианты, а моя ещё псевдографику обрабатывает: вместо вертикальной - символ "|", вместо горизонтальной - символ дефиса, вместо двойной горизонтальной - символ "=", и так далее, и наоборот из 1251 в 866-ю точно так же. Привести здесь нереально т.к. символы у меня в этой функции в их графическом виде, но кому интересно - могу прислать.
|
|
|
|
| постоянный участник
|
Пост N: 8
Зарегистрирован: 13.09.07
|
|
Отправлено: 25.01.08 18:42. Заголовок: Перекодиро..
Перекодировать из 1251 в 866 или наоборот просто. Было бы не плохо, если бы Harbour( так же как и FoxPro ) реагировал на кодовую страницу, находящуюся в заголовке Dbf-файла и сам занимался перекодировкой текстовых полей.
|
|
|
|