VBScript - テキストファイルの文字コードを変換する
VBScript - テキストファイルの文字コードを変換する
Stream
オブジェクトを使って、テキストファイルの文字コードを変換できます。
文字コードを変換するには、次の順に処理します。
- 変換前の文字コードで、テキストファイルを読み取る。
- 変換したい文字コードで読み取ったデータを書き出す。
サンプルスクリプト
以下のスクリプトは、EUC-JP のテキストファイルを UTF-8 に変換します。
With CreateObject("ADODB.Stream")
'--------------------
' テキストファイルを読み取る
'--------------------
.Type = 2 '2: テキストデータを扱う
.Charset = "euc-jp"
.Open
.LoadFromFile "C:\path\to\file.txt"
Dim readedContent
readedContent = .ReadText
'--------------------
' 読み取ったデータを書き戻す
'--------------------
.Position = 0
.Charset = "utf-8"
.WriteText readedContent
.SetEOS
'保存して閉じる
.SaveToFile "C:\path\to\new-file.txt"
.Close
End With
サンプルスクリプトの説明
Stream
オブジェクトを生成して、プロパティを設定します。
テキストデータを扱うため、Type プロパティに 2 を設定します。
読み取るテキストファイルの文字コードを Charset プロパティに設定します。
今回は EUC-JP なので “euc-jp” と指定します。
.Type = 2 '2: テキストデータを扱う
.Charset = "euc-jp"
Open メソッドでストリームを開きます。
LoadFromFile メソッドで、指定したファイルをストリームに読み込みます。
.Open
.LoadFromFile "C:\path\to\file.txt"
ReadText メソッドでデータを読み取り、変数に保持しておきます。
Dim readedContent
readedContent = .ReadText
読み取ったデータをストリームに書き戻していきます。
Position プロパティに 0 を設定し、ストリームの位置を先頭に戻します。
(ストリームの位置が先頭にないと、文字コードが設定できないため)
変換後の文字コードを Charset プロパティに設定します。
今回は UTF-8 にしたいので “utf-8” と指定しています。
WriteText メソッドで変数に保持していたデータを書き出します。
SetEOS メソッドで書き出しが終わった位置をストリームの末尾に設定します。
.Position = 0
.Charset = "utf-8"
.WriteText readedContent
.SetEOS
SaveToFile メソッドでストリームのデータをテキストファイルに書き込みます。
Close メソッドでストリームを閉じます。
.SaveToFile "C:\path\to\new-file.txt"
.Close
以上でファイル変換は完了です。
Charset プロパティに設定できる内容を調べる
Charset プロパティには文字セットを表す文字列が指定できます。
システムが認識できる文字セットの文字列を調べるには、Windows レジストリの HKEY_CLASSES_ROOT\MIME\Database\Charset
のサブキーを参照します。
コマンドプロンプトより、次のように REG コマンドを実行すると簡単に調べられます。
REG QUERY "HKCR\MIME\Database\Charset"
実行例(実行結果はだいぶ抜粋しています)
C:\Users\username>REG QUERY "HKCR\MIME\Database\Charset"
HKEY_CLASSES_ROOT\MIME\Database\Charset\ascii
HKEY_CLASSES_ROOT\MIME\Database\Charset\euc-jp
HKEY_CLASSES_ROOT\MIME\Database\Charset\shift-jis
HKEY_CLASSES_ROOT\MIME\Database\Charset\shift_jis
HKEY_CLASSES_ROOT\MIME\Database\Charset\unicode
HKEY_CLASSES_ROOT\MIME\Database\Charset\utf-8
HKEY_CLASSES_ROOT\MIME\Database\Charset\
より後ろの文字列が Charset プロパティに指定できる内容となります。
たとえば HKEY_CLASSES_ROOT\MIME\Database\Charset\shift_jis
であれば shift_jis
とします。
ちなみに utf-8 を指定した場合、BOM付きの UTF-8 になります。
BOM なしにしたい場合、以下のリンク先にあるように、ひと手間かけて取り除いてあげる必要があります。
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事にコメントをしてみませんか?