Процедура Сформировать() Перем Имя,Путь; Если ФС.ВыбратьФайл(0,Имя,Путь,"","*.*|*.*","*")=0 Тогда Возврат; КонецЕсли; Файл=Путь+Имя; Стрим=СоздатьОбъект("ADODB.Stream"); Стрим.Type=2; Стрим.charset="windows-1251"; Стрим.Open(); Стрим.LoadFromFile(Файл); Стрим.charset="utf-8"; Стр=Лев(Стрим.ReadText(),255); Сообщить(Стр); КонецПроцедуры // еще способ Процедура Сформировать() Перем Имя,Путь; Если ФС.ВыбратьФайл(0,Имя,Путь,"","*.*|*.*","*")=0 Тогда Возврат; КонецЕсли; Файл=Путь+Имя; УТФ16=КаталогВременныхФайлов()+_GetPerformanceCounter()+"-unicode.txt"; ЦП1251=КаталогВременныхФайлов()+_GetPerformanceCounter()+"-cp1251.txt"; БАТ=КаталогВременныхФайлов()+_GetPerformanceCounter()+".bat"; Стр="@echo off |chcp 1251 > nul |chcp 65001 |>> """+УТФ16+""" cmd /u /c ""type """+Файл+""" & chcp 1251 > nul"" |chcp 1251 > nul |type """+УТФ16+""" > """+ЦП1251+""" |chcp 866 > nul"; Текст=СоздатьОбъект("Текст"); Текст.ДобавитьСтроку(Стр); Текст.Записать(БАТ); КомандаСистемы(БАТ); Текст=СоздатьОбъект("Текст"); Текст.Открыть(ЦП1251); Для Сч=1 По Текст.КоличествоСтрок() Цикл Сообщить(Лев(Текст.ПолучитьСтроку(Сч),255)); КонецЦикла; ФС.УдалитьФайл(УТФ16); ФС.УдалитьФайл(ЦП1251); ФС.УдалитьФайл(БАТ); КонецПроцедуры
Функция Перекодировка(Стр="",Кодировка="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();
//Код где, ни единого объекта. 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 По Текст.КоличествоСтрок() Цикл Сообщить(Текст.ПолучитьСтроку(Сч)); КонецЦикла; КонецПроцедуры