WSHでUTF-8テキストを読み書きする

http://d.hatena.ne.jp/language_and_engineering/20090203/p1
http://www.k-sugi.sakura.ne.jp/windows/vb/3792/

function readFile(file, charset) {
	var adTypeText = 2; // テキスト
	var adReadAll = -1; // 全行

	if (!charset) { charset = "utf-8"; }

	var sr = new ActiveXObject("ADODB.Stream");
	sr.Type = adTypeText;
	sr.charset = charset;
	sr.Open();
	sr.LoadFromFile( file );
	var text = sr.ReadText( adReadAll );
	sr.Close();
	
	return text;
}

function writeFile(file, text, charset) {
	var adTypeText  = 2; // テキスト
	var adWriteChar = 0; // 改行なし
	var adSaveCreateOverWrite = 2; // ある場合は上書き

	if (!charset) { charset = "utf-8"; }

	var sw = new ActiveXObject("ADODB.Stream");
	sw.Type = adTypeText;
	sw.charset = charset;
	sw.Open();
	sw.WriteText(text, adWriteChar);
	sw.SaveToFile( file, adSaveCreateOverWrite );
	sw.Close();
}

function appendFile(file, text, charset) {
	var adTypeText      = 2;  // テキスト
	var adModeReadWrite = 3;  // 読み書き
	var adWriteLine     = 1;  // 改行あり
	var adSaveCreateOverWrite = 2; // ある場合は上書き


	if (!charset) { charset = "utf-8"; }

	var sw = new ActiveXObject("ADODB.Stream");
	sw.Type = adTypeText;
	sw.charset = charset;
	sw.Mode = adModeReadWrite;
	sw.Open();
	sw.LoadFromFile( file );
	sw.Position = sw.Size;
	sw.WriteText(text, adWriteLine);
	sw.SaveToFile( file, adSaveCreateOverWrite );
	sw.Close();
}