備忘録として。
JScriptで、Scripting.FileSystemObjectを使って、UTF-8テキストファイルを読み書きすると文字化けする。
ADODB.Streamを使えば、解決する。
var fs = WScript.CreateObject("Scripting.FileSystemObject"); var ts = fs.OpenTextFile("inp.txt"); var str = ts.ReadAll(); var fso = WScript.CreateObject("Scripting.FileSystemObject"); var outfile = fso.CreateTextFile("out.txt", true, true); outfile.Write(str);
↓↓↓(書き換え)↓↓↓
var sr = new ActiveXObject("ADODB.Stream"); sr.Type = 2; // adTypeText sr.charset = "utf-8"; sr.Open(); sr.LoadFromFile("inp.txt"); var txt = sr.ReadText(-1); // adReadAll sr.Close(); var sw = new ActiveXObject("ADODB.Stream"); sw.Type = 2; // adTypeText sw.charset = "utf-8"; sw.Open(); sw.WriteText(txt, 1); // adWriteLine sw.SaveToFile("out.txt", 2); // adSaveCreateOverWrite sw.Close();