投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/1/27 20:22:59
渡される文字が、「Shift_JIS でいうところの 1 バイト文字」なのか
それとも「Shift_JIS でいうところの 2 バイト文字なのか」を
調べる関数を VB.NET で書いてみました。


''' <summary> 
''' Shift_JIS 変換時に、シングルバイト文字なら 1、ダブルバイト文字なら 2 を返す。どちらでもない場合は 0。 
''' </summary> 
Public Function GetCharWidth(c As CharAs Integer
    Static sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding(932, EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback)
    Try
        Return sjis.GetByteCount(c.ToString())
    Catch
        Return 0
    End Try
End Function