HelpF.pro

Пример чтения текста в кодировке ISO

Код 1C v 7.x
 
Функция Перекодировка(Стр="",Кодировка="windows-1251")
    Стрим = СоздатьОбъект("Adodb.Stream");
    Стрим.Type = 2;
    Стрим.Mode= 3;
    Стрим.charset="iso-8859-5";
    Стрим.Open();
    Стрим.WriteText(Стр);
    Стрим.Position=0;
    Стрим.charset=Кодировка;
    Рез=Стрим.ReadText(-1);
    Стрим.Close();
    Возврат    Рез;
КонецФункции

//Если предыдущая функция не срабатывает, то попробуйте:
Стрим = СоздатьОбъект("Adodb.Stream");
Стрим.charset="iso-8859-5";
Стрим.Open();
Стрим.LoadFromFile("c:\WORK\H R\PSHRR848.C");
Стрим.Position=0; // здесь уже можно дергать нормальный текст
 
Стрим2 = СоздатьОбъект("Adodb.Stream");
Стрим2.charset="windows-1251";
Стрим2.Open();
Стрим2.WriteText(Стрим.ReadText);
Стрим2.Position=0;
Рез=Стрим2.ReadText(-1);
Стрим.Close();
Стрим2.Close();
//Выведем в Сообщить результаты
Message("2 = "+Рез);
Message("StrLen(Рез) = "+StrLen(Рез));

// Кратко
Стрим = СоздатьОбъект("Adodb.Stream");
Стрим.charset="iso-8859-5";
Стрим.Open();
Стрим.LoadFromFile("c:\WORK\H R\PSHRR848.C");
Рез=Стрим.ReadText();



Код 1C v 7.x
  //Код где, ни единого объекта. smaharbA
Процедура Сформировать()
    Стр="Нажрися вотки и закуси ка селедкой! ";
    База=""+_GetPerformanceCounter()+".txt";
    УТФ=КаталогВременныхФайлов()+"УТФ"+База;
    ИСО=КаталогВременныхФайлов()+"ИСО"+База;
    ДОС=КаталогВременныхФайлов()+"ДОС"+База;
    ОбратноДОС=КаталогВременныхФайлов()+"ОбратноДОС"+База;
    Текст=СоздатьОбъект("Текст");
    Текст.КодоваяСтраница(1);
    Для Сч=1 По 10 Цикл
        Текст.ДобавитьСтроку(Стр);
    КонецЦикла;
    Текст.Записать(ДОС);
    Текст.Очистить();
    КомандаСистемы("chcp 28595 > nul & echo off 2> """+ИСО+""" & for /f ""delims="" %i in ("+ДОС+") do (chcp 28595|>> """+ИСО+""" echo %i)");
//    КомандаСистемы("cmd /c ""chcp 28595|> """+ИСО+""" echo "+Стр+""""); 
    Текст.КодоваяСтраница(0);
    Текст.ДобавитьСтроку(Симв(255)+Симв(254));
    Текст.Записать(УТФ);
    КомандаСистемы("chcp 28595|> nul echo & cmd /u /c type """+ИСО+""" >> """+УТФ+"""");
    КомандаСистемы("type """+УТФ+""" > """+ОбратноДОС+"""");
    Текст.КодоваяСтраница(1);
    Текст.Открыть(ОбратноДОС);
    Для Сч=1 По Текст.КоличествоСтрок() Цикл
        Сообщить(Текст.ПолучитьСтроку(Сч));
    КонецЦикла;
КонецПроцедуры

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/576.html