
В общем есть такого рода сорц:
Торговля
Известно что это UTF-8 (Юникод).
Как мне получить из этого строку "Торговля" в кодировке Windows 1251, а не те же символы в этой кодировке?
Dim a() As Byte = Encoding.Unicode.GetBytes("Торговля")
Dim Sb As New StringBuilder
For Each B As Byte In a
Sb.Append(B.ToString("X2") & " ")
Next
Debug.WriteLine(Sb.ToString)
22 04 3E 04 40 04 33 04 3E 04 32 04 3B 04 4F 04
- Код: Выделить всё
Encoding.Unicode.GetBytes("Торговля")
Dim Dec As Byte
If Byte.TryParse("1F", Globalization.NumberStyles.HexNumber, Nothing, Dec) Then
MsgBox(Dec)
End If
Maitris писал(а):Ну допустим байты вынуты. Что же тогда со смесью вроде cТp?
Как-то некрасиво получается.. Задержка. Имхо тут что-то другое должно быть, нежели парсер. Браузер ведь мгновенно обрабатывает такие тексты.
Private Sub Test()
Dim InputStr As String = "Торговля"
Dim Rgx As New Regex("&#x(?<Hex>[0-9A-F]{1,4})", RegexOptions.IgnoreCase)
Dim RMC As MatchCollection = Rgx.Matches(InputStr)
Dim Sh As Short
Dim B(RMC.Count * 2) As Byte
Dim Index As Integer = 0
Dim Tmp As String = ""
Dim RR As New ByteSpliter
For Each M As Match In RMC
tmp = M.Groups.Item("Hex").Value
If Short.TryParse(Tmp, Globalization.NumberStyles.HexNumber, Nothing, Sh) Then
RR.WholePiece = Sh
B(Index) = RR.One
B(Index + 1) = RR.Two
Index += 2
End If
Next
MsgBox(Encoding.Unicode.GetString(B))
End Sub
<StructLayout(LayoutKind.Explicit, Size:=2)> _
Public Class ByteSpliter
<FieldOffset(0)> Public WholePiece As Short
<FieldOffset(0)> Public One As Byte
<FieldOffset(1)> Public Two As Byte
End Class
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2