NonSoft

文字コード表示ツールについて


 ち〜な〜み〜に〜
ある文字の文字コードを調べる時に、今まではその文字が含まれるテキストファイルを作りバイナリエディタで表示して文字コードを確認していました。 面倒でしたが、それが手っ取り早かったのです。

最近ちょっとやる気になり、文字コード表示ツールを作る事にしました。概要は「入力した文字の文字コードを表示するツール」です。

ツールの名前は「文字コード表示ツール.NET」と決めて作り始めたのですが、、、途中で機能追加しているうちに名前が変わってしまいました。

新しい名前は「WEBエンコード/デコードツール」です。もちろん文字コードをHEXコードやDECコードで表示する機能を持っています。

なぜ「WEBエンコード/デコードツール」と言う名前なのか?
それは、URLエンコード/デコードやHTMLエンコード/デコードする機能を持っているからです。
「文字コード表示ツール.NET」というより「WEBエンコード/デコードツール」になってしまったのです。

名前は「WEBエンコード/デコードツール」でも、文字コード表示という機能に多くの時間を掛けて作ったので是非評価して欲しいと思います。

文字コード表示というとコード表示のみのようですが、文字コードを入力してその文字を表示する機能(文字コード表示の逆)も持っています。
対応文字コードはSHIFT-JIS、JIS(ISO-2022-JP)、EUC-JP、UNICODE(UTF-16)、UTF-7、UTF-8です。

こんな経緯で出来たWEBエンコード/デコードツールですが、宜しくお願いします。

ちなみに文字コードの表示方法のサンプルを以下に記述します。
1.文字列→文字コード(HEX:16進)のサンプル(EUCの時だけ、改行コードをLFにしています)
    Dim istr As String() = Split(txtIn.Text, vbCrLf)
    Dim sb As New StringBuilder("")
    For l As Integer = 0 To UBound(istr)
        If l > 0 Then sb.Append(vbCrLf)
        If l < UBound(istr) Then
            If cmbChrCode.Text = "EUC-JP" Then
                istr(l) = istr(l) & vbLf
            Else
                istr(l) = istr(l) & vbCrLf
            End If
        End If
        ' エンコード方法を指定して文字コード取得
        Dim dat() As Byte = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(istr(l))
        For i As Integer = 0 To UBound(dat)
            ' 文字コード(HEX:16進)変換
            Dim str As String = "00" & Hex(dat(i)).ToUpper
            str = str.Substring(str.Length - 2, 2)
            If i > 0 Then sb.Append(" ")
            sb.Append(str)
        Next
    Next
    txtOut.Text = sb.ToString

2.文字列→文字コード(DEC:10進)のサンプル(EUCの時だけ、改行コードをLFにしています)
    Dim istr As String() = Split(txtIn.Text, vbCrLf)
    Dim sb As New StringBuilder("")
    For l As Integer = 0 To UBound(istr)
        If l > 0 Then sb.Append(vbCrLf)
        If l < UBound(istr) Then
            If cmbChrCode.Text = "EUC-JP" Then
                istr(l) = istr(l) & vbLf
            Else
                istr(l) = istr(l) & vbCrLf
            End If
        End If
        ' エンコード方法を指定して文字コード取得
        Dim dat() As Byte = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(istr(l))
        For i As Integer = 0 To UBound(dat)
            ' 文字コード(DEC:10進)変換
            Dim str As String = "000" & dat(i)
            str = str.Substring(str.Length - 3, 3)
            If i > 0 Then sb.Append(" ")
            sb.Append(str)
        Next
    Next
    txtOut.Text = sb.ToString

3.文字コード→(HEX:16進)文字列のサンプル
    Dim istr As String = txtIn.Text
    Dim ilen As Integer
    Do
        ilen = istr.Length
        istr = istr.Replace(" ", "")
        istr = istr.Replace(vbCrLf, "")
        istr = istr.Replace(vbCr, "")
        istr = istr.Replace(vbLf, "")
    Loop While (istr.Length <> ilen)
    Dim dat() As Byte = New Byte(-1) {}
    For i As Integer = 0 To istr.Length - 1 Step 2
        ReDim Preserve dat(UBound(dat) + 1)
        Try
            ' 文字コード(HEX:16進)取得
            dat(i / 2) = "&H" & istr.Substring(i, 2)
        Catch ex As Exception
        End Try
    Next
    ' エンコード方法を指定して文字列変換
    Dim ostr As String = System.Text.Encoding.GetEncoding("UTF-8").GetString(dat)
    ostr = ostr.Replace(vbCrLf, vbLf)
    ostr = ostr.Replace(vbCr, vbLf)
    ostr = ostr.Replace(vbLf, vbCrLf)
    txtOut.Text = ostr

4.文字コード→(DEC:10進)文字列のサンプル
    Dim istr As String = txtIn.Text
    Dim ilen As Integer
    Do
        ilen = istr.Length
        istr = istr.Replace(" ", "")
        istr = istr.Replace(vbCrLf, "")
        istr = istr.Replace(vbCr, "")
        istr = istr.Replace(vbLf, "")
    Loop While (istr.Length <> ilen)
    Dim dat() As Byte = New Byte(-1) {}
    For i As Integer = 0 To istr.Length - 1 Step 3
        ReDim Preserve dat(UBound(dat) + 1)
        Try
            ' 文字コード(DEC:10進)取得
            dat(i / 3) = istr.Substring(i, 3)
        Catch ex As Exception
        End Try
    Next
    ' エンコード方法を指定して文字列変換
    Dim ostr As String = System.Text.Encoding.GetEncoding("UTF-8").GetString(dat)
    ostr = ostr.Replace(vbCrLf, vbLf)
    ostr = ostr.Replace(vbCr, vbLf)
    ostr = ostr.Replace(vbLf, vbCrLf)
    txtOut.Text = ostr