jscriptで utf8なファイル出力

2008/05/19

Categories: jscript

ADODB.Streamを使うと、SJIS以外のエンコードに変換可能。
て、ことが以下のURLに書いてある。
ADODB.Stream を使ったファイルの読み書き - by AOK
こんな方法があるとはな~。

こっちはさらに、utf-8出力時のBOMをどう除去するか、という話
JavaScriptでファイルの書き込みをUTF-8で行う(htaまたは、wsh用) - jiroの日記
ADODB.Streamを2つ使い、Positionを移動することでBOMをskipして出力。なるほどなー。

とりあえずSJIS出力で我慢しといて、iconvで変換するか、とか考えたけど、最初からutf-8で書き出せれば便利だ。


/* ADODB.Stream - SaveOptionsEnum */
var adSaveCreateOverWrite = 2;

/* ADODB.Stream - StreamTypeEnum */
var adTypeBinary = 1;
var adTypeText = 2;

/* ADODB.Stream - StreamWriteEnum */
var adWriteChar = 0;
var adWriteLine = 1;

var st = new ActiveXObject("ADODB.Stream");
st.type = adTypeText;
st.charset = "utf-8";
st.open();

st.WriteText( なにか出力 , adWriteLine );

st.Position = 0;
st.Type = adTypeBinary;
st.Position = 3; ←utf8なら3
var bin = st.Read();
st.Close();

var stw = new ActiveXObject("ADODB.Stream");
stw.Type = adTypeBinary;
stw.Open();
stw.Write( bin );
stw.SaveToFile( 出力ファイル , adSaveCreateOverWrite );
stw.Close();


>> Home