|
文字列のコードが分からないのであれば以下のような方法が簡単です
1. バイト配列を文字列に変換
2. 変換された文字列を再度バイト配列に変換
3. バイト配列と再変換バイト配列が同じなら変換成功
Dim bytIn As Byte() = New Byte(1) {&H81, &HC5}
Dim strEn As string = ByteToString(bytIn)
Function ByteToString(ByRef bytIn As Byte()) As String
Dim strText As String = ""
Dim bytOut() As Byte = {}
'Shift JIS 判定
strText = System.Text.Encoding.GetEncoding(932).GetString(bytIn)
bytOut = System.Text.Encoding.GetEncoding(932).GetBytes(strText)
If System.Linq.Enumerable.SequenceEqual(bytIn, bytOut) Then
Return strText
End If
'JIS 判定
strText = System.Text.Encoding.GetEncoding(50220).GetString(bytIn)
bytOut = System.Text.Encoding.GetEncoding(50220).GetBytes(strText)
If System.Linq.Enumerable.SequenceEqual(bytIn, bytOut) Then
Return strText
End If
'EUC 判定
strText = System.Text.Encoding.GetEncoding(50220).GetString(bytIn)
bytOut = System.Text.Encoding.GetEncoding(50220).GetBytes(strText)
If System.Linq.Enumerable.SequenceEqual(bytIn, bytOut) Then
Return strText
End If
'UTF-8 判定
strText = System.Text.Encoding.UTF8.GetString(bytIn)
bytOut = System.Text.Encoding.UTF8.GetBytes(strText)
If System.Linq.Enumerable.SequenceEqual(bytIn, bytOut) Then
Return strText
End If
strText = ""
Throw New Exception("Byte配列の変換に失敗しました。")
Return strText
End Function
|