これでもEUCかSJISかはある程度判別できそうでしょうか? ちょっとご指摘等ありましたら皆さんのお力を借りたいと思います。 Public Function chkCode_SJIS(ByVal ChkFileStr As String) As Boolean Dim iRet ,iRet2,iRet3 As String Dim As String Dim iFileNo As Integer Dim i As Integer Dim StrLine As String iFileNo = FreeFile Open ChkFileStr For Input As #iFileNo Do While Not EOF(iFileNo) i = 1 Line Input #iFileNo, StrLine Do While i < Len(StrLine) + 1 iRet = StrConv(Mid(StrLine, i, 1), vbWide) 'ワイド文字に変換してみる If InStr(1, iRet, Mid(StrLine, i, 1)) = 0 Then '変更前と変更後に際がある場合 chkCode_SJIS = False 'EUCの可能性があるため、処理を継続 Else 'かわりなかった
Select Case iRet 'EUCの判定要素をいくつか列挙 Case "。", vbTab, "�", "", "", "", "・", "", vbLf chkCode_SJIS = False Case Else iRet2 = StrConv(iRet, vbNarrow) '試しに1バイト文字に戻してみる If InStr(1, iRet, iRet2) = 0 Then '変更前と変更後に差異がある場合 Close #iFileNo chkCode_SJIS = True Exit Function Else 'かわり無い場合漢字の可能性があるが1バイトに変換不可ならひらがなの可能性あり iRet3 = StrConv(iRet, vbKatakana) 'カタカナに変換してみる If InStr(1, iRet, iRet3) = 0 Then '変更前と変更後に差異がある場合 Close #iFileNo chkCode_SJIS = True Exit Function Else 'ほぼ漢字の可能性大だが文字化けが漢字になることもあるため様子を見る chkCode_SJIS = False '漢字の場合は一応疑ってかかる End If End If End Select End If i = i + 1 Loop Loop End Function