シフトJISからUTF-16へ変換
VBScriptでシフトJISからUTF-16への変換ルーチンを組んでみました。
◆ソース(sj2utf.vbs)
Call FromTo("sj.txt", "shift_jis", "utf16.txt", "utf-16") 'FromToサブの第4引数を以下を参照して替える 'BOM付きビックエディアン unicodeFEFF 'BOM無しビックエディアン utf-16be 'BOM無しリトルエディアン 不明 'BOM付きリトルエディアン unicode, unicodeFFFE, utf-16, utf-16le, Public Sub FromTo(inFileName, inCharset, outFileName, outCharset) Const adSaveCreateOverWrite = 2 Dim inStream Dim outStream Set inStream = CreateObject("ADODB.Stream") inStream.Charset = inCharset inStream.Open Set outStream = CreateObject("ADODB.Stream") outStream.Charset = outCharset outStream.Open inStream.LoadFromFile inFileName inStream.CopyTo outStream outStream.SaveToFile outFileName, adSaveCreateOverWrite outStream.Close inStream.Close Set outStream = Nothing Set inStream = Nothing End Sub
◆実行方法
sj2utf.vbsとsj.txt(シフトJISのコードのデータ)を同じフォルダにして以下のコマンドを実行。または、単にsj2utf.vbsをダブルクリックする。
C:\wk>CScript sj2utf.vbs
◆補足
FromToサブの第4引数は、レジストリの以下に登録されているものとのことですが、それ以外にもあるようです。
HKEY_CLASSES_ROOT\MIME\Database\Charset
また、『BOM無しリトルエディアン』の指定の方法が不明です。
ちなみに、PerlのEncodeでは、『BOM付きリトルエディアン』の指定の方法が不明だったのですが・・・。