powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кодовая страница (текстовый фаил)
10 сообщений из 10, страница 1 из 1
Кодовая страница (текстовый фаил)
    #32680308
Фотография HalK2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста.
Я создал текстовый файл (modify file ...), набрал текст на русском.
Открыл fopen(...,2).
Почему при ?fread(...) техт на экране не на русском?
...
Рейтинг: 0 / 0
Кодовая страница (текстовый фаил)
    #32680330
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неправильная кодировка в текстовом файле? У меня все впорядке
...
Рейтинг: 0 / 0
Кодовая страница (текстовый фаил)
    #32680374
Фотография HalK2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя все в порядке.
Это здорово.
...
Рейтинг: 0 / 0
Кодовая страница (текстовый фаил)
    #32680787
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У текстового файла нет никакого признака кодовой страницы. Это значит, чот никакого автоматического конвертирования символов не будет. Чтение и запись в текстовый файл всегда идет в той кодовой странице в которой работает среда FoxPro.

Указать кодовую страницу для FoxPro можно единственно следующим образом:

-) Создается файл конфигурации CONFIG.FPW - это обычный текстовый файл
-) В этом файле пишется такая строка

CODEPAGE=1251

-) Этот файл конфигурации кладется рядом с EXE (можно включить внутрь EXE).

Проверить текущую кодовую страницу FoxPro можно функцией

?CPCURRENT() - без параметров

Проверить, какой именно файл конфигурации был использован можно функцией

?SYS(2019)

Для версий до VFP5 включительно нужен еще служебный файл FOXPRO.INT (не путать с INI, расширение от слова "international"). Этот файл поставляется вместе с FoxPro и расположен в его корневой директории. Его надо класть рядом с EXE. Включать внутрь EXE - недопустимо.

Начиная с версии VFP6 необходимость в нем отпала. Он больше не нужен.

Если файл создан в кодовой странице отличной от текущей кодовой страницы FoxPro, то при работе с ним всегда следует использовать опцию AS, например:

MODIFY FILE MyFile.txt AS 866

а при чтении через FREAD() использовать явнную конвертацию через CPCONVERT() для прочитанных строк.
...
Рейтинг: 0 / 0
Кодовая страница (текстовый фаил)
    #32681203
Фотография HalK2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня уже всё в порядке, забыл написать.
Сначала я делал так:

fff=Fopen(sales.txt,2)
?fread(fff,5)

И Фокс выдавал пургу!

Но теперь я написал так:

fff=Fopen(sales.txt,2)
?fread(fff,5) Font "Courier", 15

И сработала.
...
Рейтинг: 0 / 0
Кодовая страница (текстовый фаил)
    #32986327
vital345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если есть файл is.dbf, вся текстовая информация в котором в кодировке
KOI8-RU, то что делать?
Мне нужно получить dbf файл, но вся текстовая инфа в нем должна быть win1251
...
Рейтинг: 0 / 0
Кодовая страница (текстовый фаил)
    #32986600
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самому написать функцию перекодировки, например на основе SYS(15)
Если задача одноразовая - натравить на свой файлик стото вроде программы Штирлиц
...
Рейтинг: 0 / 0
Кодовая страница (текстовый фаил)
    #32987553
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi vital345!

> А если есть файл is.dbf, вся текстовая информация в котором в кодировке
> KOI8-RU, то что делать?

Откуда такая экзотика то? и это точно KOI8-RU (не слышал про такую) или всё-же KOI8-R ?
Фокс эту кодовую страницу не поддерживает.

> Мне нужно получить dbf файл, но вся текстовая инфа в нем должна быть win1251

Отменить неявную перекодировку символьных полей в этой таблице (SET NOCPTRANS TO ...), использовать например вот такую функцию для перекодировки (штатный CPCONVERT не могёт с KOI8-R работать):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
LPARAMETERS lnCPFrom, lnCPTo, lcInStr
DECLARE INTEGER MultiByteToWideChar IN WIN32API ;
 INTEGER, INTEGER, STRING, INTEGER, STRING @, INTEGER
DECLARE INTEGER WideCharToMultiByte IN WIN32API ;
 INTEGER, INTEGER, STRING, INTEGER, STRING @, INTEGER, STRING, INTEGER @

lnInStrLen = LEN(m.lcInStr)
ln1 =  0 
lnBufLen = MultiByteToWideChar(m.lnCPFrom,  0 , m.lcInStr, m.lnInStrLen,  0 ,  0 )
lcBuf = SPACE(m.lnBufLen *  2 )
MultiByteToWideChar(m.lnCPFrom,  0 , m.lcInStr, m.lnInStrLen, @m.lcBuf, m.lnBufLen *  2 )
lcOutLen = WideCharToMultiByte(m.lnCPTo,  0 , m.lcBuf, m.lnBufLen* 2 ,  0 ,  0 , "*", @m.ln1)
lcOut = SPACE(m.lcOutLen/ 2 )
WideCharToMultiByte(m.lnCPTo,  0 , m.lcBuf, m.lnBufLen *  2 , @m.lcOut, m.lcOutLen /  2 , "*", @m.ln1)
RETURN m.lcOut

KOI8-R это CP номер 20866. Win1251 соответственно номер 1251 :) В системе необходимо наличие поддержки данной CP (обычно она имеется если установена русская локаль, но не лишним будет проверить в апплете Regional And Language Options).

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Кодовая страница (текстовый фаил)
    #33043823
ВладимирМУ текстового файла нет никакого признака кодовой страницы. Это значит, чот никакого автоматического конвертирования символов не будет. Чтение и запись в текстовый файл всегда идет в той кодовой странице в которой работает среда FoxPro.

Указать кодовую страницу для FoxPro можно единственно следующим образом...

А в fpw9.0 есть признак кодовой страницы для файлов, включенных в проект! И преобразование идёт автоматически. Для этого необходимо в окне Project Manager кликнуть правой кнопкой на нужном нам файле и выбрать там пункт Code Page.
...
Рейтинг: 0 / 0
Кодовая страница (текстовый фаил)
    #33043906
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барсуков Александр
А в fpw9.0 есть признак кодовой страницы для файлов, включенных в проект! И преобразование идёт автоматически. Для этого необходимо в окне Project Manager кликнуть правой кнопкой на нужном нам файле и выбрать там пункт Code Page.
Ну, если Вы только из желания все расставить по своим местам поднимаете таку древнюю тему (последнее сообщение 30.03.2005), то Вы не совсем точны в своих определениях.

Итак, повторяю, у обычных текстовых файлов нет признака кодовой страницы.

То, что стоит в информации по проекту (кстати, эта информаци была и в более ранних версиях FoxPro) - это не есть реальная кодовая страница текстового файла. Эта та страница, в которой FoxPro будет читать и модифицировать этот текстовый файл. Но только в том случае, если он будет открыт из окна проекта!

Т.е. это некий признак, записанный НЕ в текстовом файле, а только и именно в самом файле проекта (PJX, PJT).
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кодовая страница (текстовый фаил)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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