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/faq/view/670.html