Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Запись файла utf-8 через ActiveXObject("ADODB.Stream") (https://javascript.ru/forum/css-html-internet-explorer/50022-zapis-fajjla-utf-8-cherez-activexobject-adodb-stream.html)

maternik 08.09.2014 09:29

Запись файла utf-8 через ActiveXObject("ADODB.Stream")
 
Привет, ребят! У меня небольшая программка для IE 11 онли, которая записывает x3d-разметку в файл посредством ActiveXObject. Мне принципиально важно, чтобы файл был в кодировке UTF-8, иначе разметка не отобразится в спец плеере. Конструкция ActiveXObject("Scripting.FileSystemObject") записывает не в utf-8, поэтому пытаюсь использовать ActiveXObject("ADODB.Stream"). Сам по себе он не запускается, поэтому редактирую реестр, как посоветовали когда-то кому-то здесь на форуме. На моей машине это сработало, но на другой нет - объект ADODB.Stream не создаётся даже после правок реестра. Посоветуйте, плз, в чём может быть проблема или какой иной способ записи utf8-файла или активации ADODB.

try {var  поток = new ActiveXObject("ADODB.Stream");} catch (e){
  // активация объекта через реестр
  var объектРеестра = new ActiveXObject('WScript.Shell');
  var текущийУровень = объектРеестра.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3\\CurrentLevel");
  var флаги = объектРеестра.RegRead("HKLM\\SOFTWARE\\Microsoft\\Internet Explorer\\ActiveX Compatibility\\{00000566-0000-0010-8000-00AA006D2EA4}\\Compatibility Flags");
  try { объектРеестра.RegWrite("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3\\CurrentLevel", "73728", "REG_DWORD");
   объектРеестра.RegWrite("HKLM\\SOFTWARE\\Microsoft\\Internet Explorer\\ActiveX Compatibility\\{00000566-0000-0010-8000-00AA006D2EA4}\\Compatibility Flags", "0", "REG_DWORD");
  } catch (e) {	alert("Ошибка "+e.number+": "+e.description+"\nВозможно у вас нет прав для редактирования реестра или данной директории не существует!");return;
 } alert("Был активирован объект ADODB.Stream. Пожалуйста, перезапустите браузер."); return;}

 // запись файла
 //var  поток = new ActiveXObject("ADODB.Stream");
 поток.Open();
 поток.Type = 2; поток.Position = 0; поток.Charset = "utf-8"; // текстовый тип данных, сначала документа, кодировка utf-8
 поток.WriteText(код);
 поток.SaveToFile("файл.x3d", 2);
 поток.Close();
}

Aetae 08.09.2014 10:22

Иной способ записи - кодировка в utf8 с помощью js и запись через fso строки как бинарных данных.


Часовой пояс GMT +3, время: 07:41.