powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как перекодировать тексовый файл?
22 сообщений из 22, страница 1 из 1
Как перекодировать тексовый файл?
    #33807258
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть файл в кодировке ASCII (DOS). Как его перекодировать в ANSI ?
Сразу оговорюсь, что файл большой > 500Мб.
Спасибо.
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33807419
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76Есть файл в кодировке ASCII (DOS). Как его перекодировать в ANSI ?
Сразу оговорюсь, что файл большой > 500Мб.
Спасибо.
пользуй функции
FOPEN(), FCREATE(), FGET()/FPUT() (или FGETS()/PUTS()) , OEMTOANSI()

тока задержка, конечно, будет офигительная
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33807460
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь с MODIFY FILE (lcFileOut) AS 1251 медитировать, но что то не получается...
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33807500
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда уже открыть как Modify File ... as 866
потом через меню Save As - кнопочка Code Page ставишь 1251
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33807513
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению мне надо сделать конвертацию программно. Видимо придется делать как --Eugene-- посоветовал. С dbf подобные преобразования удобно сделаны, думал, что с текстом так же будет...
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33807753
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни с обычным файлом, ни с DBF "по простому" ничего не выйдет.

Если надо изменить кодировку содержимого файла, то придется перелопачивать весь файл. Просто изменив какой-то признак - не получится.

Программа CPZERO.PRG для DBF файлов НЕ МЕНЯЕТ кодировку. Она всего-лишь устанавливает признак, который говорит о том, в какой кодировке надо читать информацию из этого файла. Но саму кодировку содержимого НЕ МЕНЯЕТ.
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33807781
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, если объем файла не превышает 2ГБ, то можно сделать конвертацию так:

Код: plaintext
1.
2.
3.
4.
CREATE CURSOR curTest (Content M)
APPEND BLANK
APPEND MEMO Content FROM "C:\MyDir\MyFile.txt" AS  866 
COPY MEMO Content TO "C:\MyDir\MyFile.txt" AS  1251 

Т.е. "прокачать" его через мемо-поле. Правда, опция AS в командах APPEND MEMO и COPY MEMO появилась только в версии VFP3. Если речь идет о FD2.x, то придется сначала ручками сконвертировать содержимое мемо-поля, а потом уже копировать.
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33807801
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ВладимирМ
К счастью у меня vfp 8 :)
Попробую сделать по вашему примеру. О результатах доложу.
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33807913
sergej_57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если использовать функцию FILETOSTR(cFileName) файл представить как переменная, обработать его как переменную и дальше ее обрабатывать ?
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33808830
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я работаю так:
Код: plaintext
1.
2.
3.
4.
lcFile = Filetostr(fName)
Wait Window 'Перекодування файлу '+Lower(Juststem(fName))+'...' Nowait
lcFile	=	Cpconvert( 1251 , 866 ,lcFile) &&Cpconvert( 866 , 1251 ,lcFile) обротный транскод
Strtofile(lcFile, fName)
Пока проблем не возникало
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33808842
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>AlikWishin
Спасибо!
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33811754
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Результаты:
Тест проводился на txt файле размером 250Мб.

1. Вариант предложенный ВладимирМ - 30-40 сек.
2. Выриант предложенный AlikWishin - 3мин.15сек. - 3мин.25сек.

Всем спасибо. Взял 1-й вариант :)
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33813020
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dik76Результаты:
Тест проводился на txt файле размером 250Мб.

1. Вариант предложенный ВладимирМ - 30-40 сек.
2. Выриант предложенный AlikWishin - 3мин.15сек. - 3мин.25сек.

Всем спасибо. Взял 1-й вариант :)

Ну мне до Владимира Максимова еще лет и лет!
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33813060
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Dik76!

Да, если переменная памяти получается "нестандартная" (более 16Мб) то работа
с ней будет заметно тормозить - кстати удивительно что вообще работает -
большинство функций с такими монстроидальными строками не хотят работать.
Проблема с memo - двойная (или даже тройная) прогонка данных через диск
(особенно если памяти на машине не хватает чтоб всё в кэше поместилось).
Возможно что более низкоуровневый вариант (те-же FREAD/FWRITE) окажется ещё
быстрее - но конечно заметно массивнее код будет :)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33814707
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет низкого уровня Вот код на суд общественности

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
fname=getfile()
hout=fcreate('c:\windocs.win')
handl=fopen(fname)
tn=seconds()
do while not feof(handl)
strinput=fread(handl, 8 * 1024 )
stroutput=cpconvert( 866 , 1251 ,strinput)
=fwrite(hout,stroutput,len(stroutput))
enddo
tk=seconds()
=fclose(hout)
=fclose(handl)
wait wind str(tk-tn)+' секунд'

файл 354мб P4 -1500 win98 = 57 секунд

оформите в класс и подберите параметр 8*1024
у меня вышли следующие значения

1к - 69 сек
4к - 63 сек
8к - 57 сек
16к - 69 сек
мне кажется что размер блока чтения надо оптимизировать под файловую систему и размер страницы кэша windows.
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33815664
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi S866!

Ты бы прогнал все остальные варианты на этом файле - и результат показал :)
Возможно будет иметь значение режим открытия файлов...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33815854
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Igor Korolyov
а зачем прогонять - немного выше товарищ Dik76 уже прогнал - и результаты опубликовал
Код: plaintext
1.
2.
3.
4.
5.
6.
Результаты:
Тест проводился на txt файле размером 250Мб.

 1 . Вариант предложенный ВладимирМ -  30 - 40  сек.
 2 . Выриант предложенный AlikWishin - 3мин.15сек. - 3мин.25сек.

Всем спасибо. Взял  1 -й вариант :)

насчет режима открытия файлов - абсолютно согласен с Вами тоже необходимо подобрать.
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #33820570
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi S866!

> а зачем прогонять - немного выше товарищ Dik76 уже прогнал - и результаты
> опубликовал

Потому что он сравнил лишь 2 способа - сопоставлять же его результаты с
твоими "напрямую" никак нельзя - и файл другой и машина тоже другая...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как перекодировать тексовый файл?
    #39024856
asai9493
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Всем !!. Не знаю, может и не по теме, но на Вас последняя надежда.
Мне нужно открыть файл dbf формата. Пробовал все программы, какие только есть- fox pro, dbf manager, excell, total commander.... все напрасно. Файл dbf открывают, но вот только появляются ????. Думаю, скорее всего это файл из далекого прошлого....
Кто знает решение... помогите. НУжно срочно!
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #39024953
asai9493Привет Всем !!. Не знаю, может и не по теме, но на Вас последняя надежда.
Мне нужно открыть файл dbf формата.Точно формата? Или таки с расширением dbf? Пробовал все программы, какие только естьТочно ВСЕ?- fox pro, dbf manager, excell, total commander.... все напрасно. Файл dbf открывают, но вот только появляются ????.Куча знаков вопроса в полях? Если да, то есть большая вероятность неправильного создания этого файла и это никакими перекодировками не исправится ибо знак вопроса в любой кодировке есть знак вопроса. Думаю, скорее всего это файл из далекого прошлого....На каком основании так думаете? В общем-то, файлики как раз из далекого прошлого все уже умеют открывать. Это вот про новые фичи не все могут знать и потому не отрывать.Кто знает решение...Решения ЧЕГО? Открытия неизвестно какого файла неизвестной структуры с неизвестным содержимым? помогите. НУжно срочно!Содержимое файлика предлагается угадать? И на основе угаданного порассуждать про сферический файлик в вакууме?
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #39025015
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для начала стоит посмотреть заголовок файла и сравнить со стандартными форматами для dbf.
Смотреть лучше всего в Hex-редакторе. По удобству использования я бы рекомендовал WinHex - поиском по инету думаю нетрудно найти хорошую ;) версию, либо, если вдруг есть такое желание - можно конечно и купить его. :)
После открытия файла, следует обратить внимание в первую очередь на две первые 16-ричные цифры.
В зависимости от них файл относится к типам:
02 - FoxBASE
03 - FoxBASE+/Dbase III plus, нет memo
30 - Visual FoxPro
31 - Visual FoxPro, поддержка свойства autoincrement
32 - Visual FoxPro, поддержка полей типа Varchar, Varbinary, или Blob
43 - dBASE IV SQL табличный файл, нет memo
63 - dBASE IV SQL системный файл, нет memo
83 - FoxBASE+/dBASE III PLUS, с memo
8B - dBASE IV с memo
CB - dBASE IV SQL табличный файл, с memo
F5 - FoxPro 2.x (или младше) с memo
FB - FoxBASE

Ну а после определения типа, можно посмотреть и остальное. Опять же - продолжая с заголовка - первых нескольких строк. Кроме того - вместо знаков вопроса еще ниже, под заголовком, где идут по порядку записи всех полей, можно увидеть выражение полей в 16-ричном виде и понять, что же там находится.
...
Рейтинг: 0 / 0
Как перекодировать тексовый файл?
    #39025215
FBoris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте опен офис, когда открываешь должен предложить кодовую страницу. Только сделайте предварительно копию файла, т.к. если не в той откроешь, то будут другие вопросики и настройки кодировки сохранятся.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как перекодировать тексовый файл?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]