Вопрос
кодировка txt-файла открытого при помощи ActiveXObject
7 декабря 2011 12:21
Всем доброго времени суток!
Есть проблема с кодировкой 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;
}
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:
Подскажите, может быть есть другие способы получить данные с текстового файла?
Нравится
3 комментария
7 декабря 2011 14:54
Здравствуйте Георгий!
В данном случае проблема в том, что FileSystemObject не поддерживает кодировку UTF8 (почему-то только UTF-16)
Поэтому есть два метода решения проблемы:
1. Изменить кодировку открываемого файла:
2. Работать с файлом через ADODB
var Stream = new ActiveXObject('ADODB.Stream');
Stream.Open
Stream.getFile(File).OpenAsTextStream(1, true).ReadLine()
Stream.CharSet = "UTF-8"
9 декабря 2011 12:57
Анна, спасибо за рекомендации, немного доработал Ваш код:
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); }
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать