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/faq7/view/576.html