【VB Script】SJIS形式のファイルをUTF-8形式に変換して保存する
文字コード変換について。
nkfコマンドが使えれば一番てっとり早いが、VB Scriptでの変換方法も見つけたのでメモ。
少々面倒だが、ある文字コード専用の"ADODB.Stream"を作って、これらの間で文字をやり取りすることで変換を行う。
なお、Shift_JISとUTF-8に限らず、システム(筆者はWindowsXP)が扱える文字セットなら使用できる。
' SJISとUTF-8用の"ADODB.Stream"オブジェクトを得る
Set objSJIS = CreateObject("ADODB.Stream")
Set objUTF8 = CreateObject("ADODB.Stream")
' SJIS形式のファイルを開く
objSJIS.Type = 2 ' adTypeText
objSJIS.Charset = "Shift_JIS"
objSJIS.Open
objSJIS.LoadFromFile "C:\Documents and Settings\h3537\My Documents\sjis.txt"
'UTF-8形式に変換して保存する
objUTF8.Type = 2 ' adTypeText
objUTF8.Charset = "UTF-8"
objUTF8.Open
objSJIS.CopyTo objUTF8 ' ここがポイント。文字を移しかえることで、文字コードの変換を行っている。
objUTF8.SaveTofile "C:\Documents and Settings\h3537\My Documents\utf8.txt"
objSJIS.Close
objUTF8.Close
上記では、LoadFromFile やSaveTofileを使ってファイル単位で変換しているが、
ReadTextやWriteTextを使って文字列単位での変換も出来る。