кодировка txt-файла открытого при помощи ActiveXObject

Всем доброго времени суток!

Есть проблема с кодировкой txt-файла. Как изменить кодировку файла, т.к. после считывания данных файла выводит "квадратики":
пример кода:

function OpenTxtTemplate(Name) {
        var Dataset = GetSingleItemByCode('ds_Files','ds_Files');
        ApplyDatasetFilter(Dataset,'Link',Name,true);
        Dataset.Open();
        if (Dataset.IsEOF) {
                ShowInformationDialog('Template not found!');
                return null;
        }
        var File = LoadFileFromDatabase(Dataset.Values('ID'),Name,true);
        var Txt = new ActiveXObject("Scripting.FileSystemObject");
        //Txt.Visible = false;
        Txt.OpenTextFile(File, 1,false);
        var TextData = Txt.GetFile(File).OpenAsTextStream(1, true).ReadLine();
        debugger;
        Dataset.Close();
        return Txt;
}

Вот данные из VS:
Visual Studio

Подскажите, может быть есть другие способы получить данные с текстового файла?

Нравится

3 комментария

Здравствуйте Георгий!

В данном случае проблема в том, что FileSystemObject не поддерживает кодировку UTF8 (почему-то только UTF-16)

Поэтому есть два метода решения проблемы:

1. Изменить кодировку открываемого файла:

encoding

2. Работать с файлом через ADODB

var Stream = new ActiveXObject('ADODB.Stream');

Stream.Open
Stream.getFile(File).OpenAsTextStream(1, true).ReadLine()
Stream.CharSet = "UTF-8"

Спасибо, Анна!
Буду пробовать.

Анна, спасибо за рекомендации, немного доработал Ваш код:

function OpenTxtTemplate(File) {   	
	var Stream = new ActiveXObject('ADODB.Stream');
 	Stream.Open();
	Stream.Type = 2;
	Stream.CharSet = "UTF-8"
	Stream.LoadFromFile(File);
	var str = Stream.ReadText(-1);
}
Показать все комментарии