hakeの日記

Windows環境でプログラミングの勉強をしています。

EXCEL VBAメモ - UTF-8バイト列を文字に変換する

昨日と逆の変換。
UTF-8バイト列にBOMがなくても変換される模様。

Sub Sample()
    Dim buf(2) As Byte
    Dim s As String
    Dim i As Long
    
    buf(0) = &HE3 ' BOMなし
    buf(1) = &H81
    buf(2) = &H82
    
    With CreateObject("ADODB.Stream")
        .Mode = 3 'adModeReadWrite
        .Open
        .Type = 1 ' adTypeBinary
        .Write buf
        
        .Position = 0 ' .Typeを変更するため0にする必要がある
        .Type = 2 'adTypeText
        .Charset = "UTF-8"
        s = .ReadText
        .Close
    End With

    MsgBox s ' BOMがなくても変換された
End Sub