Кодировка выходной строки плохо работает с русскими буквами - Visual Basic .NET
Формулировка задачи:
Вечер добрый!
Пытаюсь написать преобразователь по типу binary -> text \ text -> binary
Итак, преобразую то, что имею в двоичную кашу
Готово, затем меняю это местами
И прогоняю этим:
И так, все замечательно, все кодируется и декодируется, кроме русских символов.
Где моя ошибка? в кодироке? или декодировке?
Листинг программы
- Dim Val As String = Nothing
- Dim Result As New System.Text.StringBuilder
- For Each Character As Byte In System.Text.ASCIIEncoding.ASCII.GetBytes(TextBox1.Text)
- Result.Append(Convert.ToString(Character, 2).PadLeft(8, "0"))
- Result.Append(" ")
- Next
- Val = Result.ToString.Substring(0, Result.ToString.Length - 1)
- TextBox2.Text = Val
Листинг программы
- TextBox1.Text = TextBox2.Text
- TextBox2.Clear()
Листинг программы
- Dim Val As String = Nothing
- Dim Characters As String = System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, "[^01]", "")
- Dim ByteArray((characters.Length / 8) - 1) As Byte
- For Index As Integer = 0 To ByteArray.Length - 1
- ByteArray(Index) = Convert.ToByte(Characters.Substring(Index * 8, 8), 2)
- Next
- Val = System.Text.ASCIIEncoding.ASCII.GetString(ByteArray)
- TextBox2.Text = Val
Решение задачи: «Кодировка выходной строки плохо работает с русскими буквами»
textual
Листинг программы
- Dim bytes() As Byte = Encoding.UTF8.GetBytes(TextBox1.Text)
- Dim Result As New StringBuilder(bytes.Length*8 + bytes.Length - 1)
- Result.Append(Convert.ToString(bytes(0), 2).PadLeft(8, "0"))
- For I As Integer = 1 To bytes.Length - 1
- Result.Append(" ")
- Result.Append(Convert.ToString(bytes(I), 2).PadLeft(8, "0"))
- Next
- TextBox2.Text = Result.ToString
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д