SEのネタ帳

発見したことや気付いた内容を書き留めたり、作った便利ツールなどを置いておく場所。主に仕事関係のことを書きます。

【VB Script】SJIS形式のファイルをUTF-8形式に変換して保存する

文字コード変換について。

nkfコマンドが使えれば一番てっとり早いが、VB Scriptでの変換方法も見つけたのでメモ。

少々面倒だが、ある文字コード専用の"ADODB.Stream"を作って、これらの間で文字をやり取りすることで変換を行う。

なお、Shift_JISUTF-8に限らず、システム(筆者はWindowsXP)が扱える文字セットなら使用できる。

 

' SJISUTF-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を使って文字列単位での変換も出来る。