広告

2014年7月27日日曜日

VBScriptでUTF-8等の文字コード変換を行うためのポイント

VBScriptやClassic ASPでUTF-8等のShift_JIS以外の文字コードを扱いたい場合があります。
ただVBScriptはShift_JISを前提として作られているため、それ以外の文字コードを扱うにはADODB.Streamオブジェクト等を使う必要がありますが、その際のつまづきやすいポイントを紹介します。


■UTF-8の文字コードをデコードする例


例えば、UTF-8の文字コードをデコードするには以下の様な処理が必要です。

Dim oUTF8
Set oUTF8 = CreateObject("ADODB.stream")
With oUTF8
    .Open
    .Type = 1 'adTypeBinary
    .Write(baUTF8)
    .Position = 0
    .Type = 2 'adTypeText
    .Charset = "UTF-8"
    strUTF8 = .ReadText()
    .Close
End With


ここでポイントになるのはStream.Writeメソッドです。


Write メソッド
パラメータ Buffer 書き込むバイトの配列を含むバリアント型 (Variant) の値を指定します。 ...







上記のとおり、Writeメソッドの引数としてバリアント型にbyte配列を格納して渡して上げる必要がありますが、そもそもVBScriptでは明示的にbyte配列を記述することはできません。

VBScriptでbyte配列を作り出す方法は以下を参考にして下さい。

Windows系SEの日記: VBScriptでbyte配列を扱う方法




Ads by 忍者AdMax