お前ら、wsh使ってますか? part5

このエントリーをはてなブックマークに追加
156名無し~3.EXE
あー、UrlEncodeだったのか。見落としてた。
こんなのでどうだろう。JScriptだとバイナリ操作が面倒だからなぁ……。

function urlEncode(text, encoding) { //encodingは"utf-8"とか"shift-jis"とか"euc-jp"とか
   var ados = new ActiveXObject("ADODB.Stream"); //まあこれは適当に許可を与えるなりして
   ados.type = 2;
   ados.charset = encoding;
   ados.open();
   ados.writeText(text);
   ados.position = 0;
   ados.type = 1;
   var xmldoc = new ActiveXObject("Microsoft.XMLDOM"), elem = xmldoc.createElement("tmp");
   elem.dataType = "bin.hex";
   elem.nodeTypedValue = ados.read();
   ados.close();
   var bin = elem.text, len = bin.length, retval = new Array(), i = 0;
   retval.push("");
   switch (encoding.toLowerCase()) { //BOMを無視するため
      case "utf-8"  : i = 6; break;
      case "unicode":
      case "utf-16" : i = 4; break;
   }
   for (; i < len; i += 2)
      retval.push(bin.substr(i, 2));
   return retval.join("%");
}