HelpF.pro

Как в 7.7 прочитать файл *.csv в UTF-8

Код 1C v 7.x
 Процедура Сформировать()
Перем Имя,Путь;
Если ФС.ВыбратьФайл(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);
ФС.УдалитьФайл(БАТ);
КонецПроцедуры


Посмотрите еще:
Функции перекодировки текста в/из UTF-8 штатными средствами 1с 7.7
Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq7/view/670.html