:: Visual Foxpro, Foxpro for DOS
Кодировка. копирование из файла в Edit
Артём

Сообщений: 44
Дата регистрации: 23.04.2001
есть текстовый файл со строками типа
Мишка на полюсе. Сахарный стаканчик.
и форма с edit ом
открываю файл в блокноте, обязательно переключаюсь на русскую раскладку в виндоусе
ctrl-a ctrl-c ctrl-v
и в едите вижу русский текст
если включена английская раскладка, то не получится, это виндоус так устроен
пробую сделать так
fn = 'c:\work\vfp9\ww3\tmp\морож.txt'
h = FOPEN( fn)
nSize = FSEEK( h, 0, 2)
= FSEEK( h, 0)
thisform.edit1.Value = FREAD( h, nSize)
=FCLOSE(h)
и не получается русских букв. Подскажите волшебные слова, пожалуйста.



Исправлено 1 раз(а). Последнее : Артём, 24.01.23 17:30
Ratings: 0 negative/0 positive
Re: Кодировка. копирование из файла в Edit
akvvohinc
Автор

Сообщений: 3752
Откуда: Москва
Дата регистрации: 11.11.2008
Если вы знаете, какая раскладка должна быть при копировании, то
1) сохраняйте текущую раскладку
2) переключайтесь на нужную
3) делайте копипаст
4) возвращайте сохраненную раскладку

Если не ошибаюсь в именах (погугльте), то это апишные функции
GetKeyboardLayout
ActivateKeyboardLayout
Ratings: 0 negative/0 positive
Re: Кодировка. копирование из файла в Edit
ssa

Сообщений: 12861
Откуда: Москва
Дата регистрации: 23.03.2005
Артём
есть текстовый файл со строками типа
Мишка на полюсе. Сахарный стаканчик.
и форма с edit ом
открываю файл в блокноте, обязательно переключаюсь на русскую раскладку в виндоусе
ctrl-a ctrl-c ctrl-v
и в едите вижу русский текст
если включена английская раскладка, то не получится, это виндоус так устроен
Спасибо, но это все мы знали еще со времен Win2000
Цитата:
пробую сделать так
fn = 'c:\work\vfp9\ww3\tmp\морож.txt'
h = FOPEN( fn)
nSize = FSEEK( h, 0, 2)
= FSEEK( h, 0)
thisform.edit1.Value = FREAD( h, nSize)
=FCLOSE(h)
и не получается русских букв. Подскажите волшебные слова, пожалуйста.
И какое отношение спич про раскладки клавы имеют к чтению данных из файла?
В какой кодировке находится текст в файле? Образец самого файла можно увидеть? Есть подозрение, что он в юникоде.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: Кодировка. копирование из файла в Edit
Артём

Сообщений: 44
Дата регистрации: 23.04.2001
Извиняюсь, пока гулял, вспомнил, что сам же год назад уже с этим возился, и спрашивал (правда, наоборот)
forum.foxclub.ru
так что работает такой код. как и почему он работает, я не помню
fn = 'c:\work\vfp9\ww3\tmp\морож.txt'
h = FOPEN( fn)
nSize = FSEEK( h, 0, 2)
= FSEEK( h, 0)
text_utf8 = FREAD( h, nSize)
thisform.edit1.Value = STRCONV(STRCONV( text_utf8, 11), 2)
=FCLOSE(h)



Исправлено 1 раз(а). Последнее : Артём, 24.01.23 22:56
Ratings: 0 negative/0 positive
Re: Кодировка. копирование из файла в Edit
akvvohinc
Автор

Сообщений: 3752
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
thisform.edit1.Value = STRCONV(STRCONV( text_utf8, 11), 2)
Будет нормально работать и так:
thisform.edit1.Value = STRCONV( text_utf8, 11)

Особо понимать тут нечего - файл находится в кодировке utf-8 (которую Фокс "не понимает"), функция STRCONV() с параметром 11 перекодирует строку в "обычную" однобайтовую кодировку (ANSI, в случае русской Win = CP 1251).



Исправлено 1 раз(а). Последнее : akvvohinc, 25.01.23 00:30
Ratings: 0 negative/0 positive
Re: Кодировка. копирование из файла в Edit
ssa

Сообщений: 12861
Откуда: Москва
Дата регистрации: 23.03.2005
Артём
Извиняюсь, пока гулял, вспомнил, что сам же год назад уже с этим возился, и спрашивал (правда, наоборот)
forum.foxclub.ru
так что работает такой код. как и почему он работает, я не помню
fn = 'c:\work\vfp9\ww3\tmp\морож.txt'
h = FOPEN( fn)
nSize = FSEEK( h, 0, 2)
= FSEEK( h, 0)
text_utf8 = FREAD( h, nSize)
thisform.edit1.Value = STRCONV(STRCONV( text_utf8, 11), 2)
=FCLOSE(h)
А упорное использование не самых свежих конструкций обязательно? Или платят за количество строк?
fn = 'c:\work\vfp9\ww3\tmp\морож.txt'
thisform.edit1.Value = STRCONV(STRCONV( FileToStr(fn), 11), 2)


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: Кодировка. копирование из файла в Edit
Артём

Сообщений: 44
Дата регистрации: 23.04.2001
Цитата:
А упорное использование не самых свежих конструкций обязательно? Или платят за количество строк?
fn = 'c:\work\vfp9\ww3\tmp\морож.txt'
thisform.edit1.Value = STRCONV(STRCONV( FileToStr(fn), 11), 2)
Спасибо. так и буду писать.
Я не профессионал. никто не платит.
Автоматизирую свою работу.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 16 (Гостей: 16)

© 2000-2023 Fox Club 
Яндекс.Метрика