Показать сообщение отдельно
  #1 (permalink)  
Старый 08.09.2014, 09:29
Аватар для maternik
Аспирант
Отправить личное сообщение для maternik Посмотреть профиль Найти все сообщения от maternik
 
Регистрация: 15.10.2013
Сообщений: 31

Запись файла 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();
}

Последний раз редактировалось maternik, 08.09.2014 в 09:32.
Ответить с цитированием