|
ADODB.Stream -> Операция не допускается, если объект закрыт |
☑ |
0
DigitalDolphin
25.08.23
✎
15:09
|
Нужно перегнать файл ANSI в UTF8. Написал тестовый файл JS для проверки. Ошибка при запуске в строке 8: Операция не допускается, если объект закрыт. Че может это быть?
1 function FileInUTF8() {
2 Stream = new ActiveXObject('ADODB.Stream');
3 Stream.Charset= 'utf-8';
4 Stream.Type = 2;
5 Stream.Mode = 3;
6
7 WScript.Echo(" -> LoadFromFile");
8 Stream.LoadFromFile(PathLoad);
9
10 WScript.Echo(" -> PathUTF8");
11 Stream.SaveToFile(PathUTF8, 2);
12 return 'ok';
13 }
14
15 WScript.Echo("Start...");
16 var PathLoad = "D:\\S2023-07-22.txt";
17 var PathUTF8 = "D:\\utf8_S2023-07-22.txt";
18 FileInUTF8();
19 WScript.Echo("...End");
|
|
1
Garykom
гуру
25.08.23
✎
15:18
|
1С 7.7?
|
|
2
Кирпич
25.08.23
✎
16:10
|
Stream.Open
|
|
3
DigitalDolphin
25.08.23
✎
16:24
|
(2) Спасибо помогло
|
|
4
DigitalDolphin
25.08.23
✎
16:27
|
Да проблему ошибки решило. Но саму перекодировку не делает. Просто отображает в новом файле глухими символами. А есть возможность перекодировать метод тут?
|
|
5
Garykom
гуру
25.08.23
✎
16:40
|
|
|
6
Кирпич
25.08.23
✎
16:42
|
Создай Stream2. запиши в него свой Stream. Stream2 запиши на диск.
|
|
7
H A D G E H O G s
25.08.23
✎
16:51
|
PathLoad="e:\tmp\ansi.txt";
PathUTF8="e:\tmp\utf8.txt";
inStream = Новый COMОбъект("ADODB.Stream");
inStream.Charset= "windows-1251";
inStream.Type = 2;
inStream.Mode = 3;
inStream.Open();
inStream.LoadFromFile(PathLoad);
outStream=Новый COMОбъект("ADODB.Stream");
outStream.Type = 2;
outStream.Mode = 3;
outStream.Open();
outStream.Charset= "utf-8";
outStream.writeText(inStream.readText());
outStream.SaveToFile(PathUTF8, 2);
outStream.close();
inStream.close();
|
|
8
DigitalDolphin
25.08.23
✎
16:59
|
(7) Спасибо. Да уже тоже на других ветках Мисто нашел это решение. СПАСИБО.
|
|
9
Кирпич
25.08.23
✎
16:59
|
function FileInUTF8(file_from, file_to) {
Stream = new ActiveXObject('ADODB.Stream');
Stream.Charset= 'windows-1251';
Stream.Type = 2;
Stream.Mode = 3;
Stream2 = new ActiveXObject('ADODB.Stream');
Stream2.Charset= 'utf-8';
Stream2.Type = 2;
Stream2.Mode = 3;
Stream.Open();
Stream2.Open();
Stream.LoadFromFile(file_from);
Stream.CopyTo(Stream2);
Stream2.SaveToFile(file_to, 2);
}
FileInUTF8("file1.txt", "file2.txt")
|
|
10
Garykom
гуру
25.08.23
✎
17:04
|
перепись динозавриков...
|
|
11
DigitalDolphin
25.08.23
✎
18:46
|
(9) Интересно, оказывается можно еще и просто стрим скопировать методом .CopyTo(). Отлично! Я решил первым через readText().
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший