JISからShift_JISへ変換する

[vb]
Function JIS2ShJIS(ByVal SrcStr As String) As String
Const adTypeText = 2
Dim myStream As Object
Dim tmpS As String
Set myStream = CreateObject("ADODB.Stream")
myStream.Open
myStream.Type = adTypeText
myStream.Charset = "Shift_JIS"
myStream.WriteText SrcStr
myStream.Position = 0
myStream.Type = adTypeText
myStream.Charset = "iso-2022-jp"
tmpS = myStream.ReadText()
myStream.Close
Set myStream = Nothing
JIS2ShJIS = tmpS
End Function
[/vb]


ADODB.Streamを使えばJISコード(ISO-2022-JP)の文字列をShift_JISコードの文字列に簡単に変換することができる。

漢字(全角文字)だけの文字列の場合、変換元となる文字列にJIS X 0208へ切替えるエスケープシーケンスが付いていない場合がある。
こういう場合は、JIS X 0208へ切替えるエスケープシーケンスは『[ESC]$B』なので、次のような補助関数を作って呼び出せば良い。

[vb]
Function JIS2ShJISex(ByVal SrcStr As String) As String
Dim tmpS As String
tmpS = Chr(&H1B) + Chr(&H24) + Chr(&H42)
tmpS = tmpS + SrcStr
tmpS = JIS2ShJIS(tmpS)
JIS2ShJISex = tmpS
End Function
[/vb]


補足だが、当然ながらアルファベット(半角文字)についてはどちらもASCIIコードを使っているので変化は無い。
更におまけで書いておくと、JIS X 0208からASCIIへの切替えエスケープシーケンスは『[ESC](B』(&H1B2842)である。

みっちょ

SALON Doluce 代表。ハッカーでカウンセラー、占い師でカメラマン、その他あらゆる顔を持つ変な人。キッズプログラミング講師、パソコン修理、カウンセリングなど喜んで承ります。お気軽にお声掛けください!