投稿者 英人  (社会人) 投稿日時 2021/8/10 13:15:34
お世話になります。
下記のm = Len(StrConv(Mid(str, i, 1), VbStrConv.Narrow))
の位置で
「System.NotSupportedException: 'No data is available for encoding 932. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.'」
というエラーで出ます。
VbStrConv.Narrowが「Visual Basic においてカルチャが文字列に与える影響」でエラーが出るということのようですが、どうすれば良いのでしょうか。


  Public Function m_len(ByVal str, ByVal mW, ByVal md) As Double
        Dim i As Integer
        Dim m As Integer
        ' str:文字列 mw:jwis全角文字幅 md:jw文字間隔 curScale:書き込みレイヤスケール 
        Dim test = System.Text.Encoding.Default
        For i = 1 To Len(str)
            m = Len(StrConv(Mid(str, i, 1), VbStrConv.Narrow))
            If m = 1 Then '半角の場合 
                m_len = m_len + mW / 2 '半角文字の幅を加えて 
                If i <> Len(str) Then m_len = m_len + md / 2 '文字間隔の半分を加える 
            End If

            If m = 2 Then '全角の場合 
                m_len = m_len + mW 'is全角文字の幅を加えて 
                If i <> Len(str) Then m_len = m_len + md '文字間隔を加える 
            End If
        Next i
        m_len = m_len * curScale
    End Function