Ошибка в функции CP1251toUTF8
Dim bufer As String = ""
Dim i As Long, IC As Long
IC = Len(Text)
For i = 1 To IC
bufer = bufer & myConvertToUTF8(Mid$(Text, i, 1))
Next
CP1251toUTF8 = bufer
End Function
Private Function myConvertToUTF8(ByVal Character As String) As String
If Character = "Ё" Then
myConvertToUTF8 = Convert.ToChar(208) & Convert.ToChar(129)
ElseIf Character = "ё" Then
myConvertToUTF8 = Convert.ToChar(209) & Convert.ToChar(145)
ElseIf Convert.ToInt32(Character) >= 192 And Convert.ToInt32(Character) <= 223 Then
myConvertToUTF8 = Convert.ToChar(208) & Convert.ToChar(Convert.ToInt32(Character) - 48)
ElseIf Convert.ToInt32(Character) >= 224 And Convert.ToInt32(Character) <= 239 Then
myConvertToUTF8 = Convert.ToChar(208) & Convert.ToChar(Convert.ToInt32(Character) - 48)
ElseIf Convert.ToInt32(Character) >= 240 And Convert.ToInt32(Character) <= 255 Then
myConvertToUTF8 = Convert.ToChar(209) & Convert.ToChar(Convert.ToInt32(Character) - 112)
Else
myConvertToUTF8 = Character
End If
End Function
Пожалуйста подскажите где ошибка в функции.
CP1251toUTF8 = bufer визиваеш сама сибя, а параметр не передаеш.
Public Function ToUTF8(Text As String) As String
Dim i As Long, IC As Long
IC = Len(Text)
For i = 1 To IC
ToUTF8 = ToUTF8 & ConvertToUTF8(Mid$(Text, i, 1))
Next
End Function
Private Function ConvertToUTF8(Char As String) As String
If Char = "Ё" Then
ConvertToUTF8 = Chr$(208) & Chr$(129)
ElseIf Char = "ё" Then
ConvertToUTF8 = Chr$(209) & Chr$(145)
ElseIf (Asc(Char) >= 192 And Asc(Char) <= 223) Then
ConvertToUTF8 = Chr$(208) & Chr$(Asc(Char) - 48)
ElseIf (Asc(Char) >= 224 And Asc(Char) <= 239) Then
ConvertToUTF8 = Chr$(208) & Chr$(Asc(Char) - 48)
ElseIf (Asc(Char) >= 240 And Asc(Char) <= 255) Then
ConvertToUTF8 = Chr$(209) & Chr$(Asc(Char) - 112)
Else
ConvertToUTF8 = Char
End If
End Function
Теперь мне нужно переписать эту функцию на VB.NET (.Net 3.5). Вот, что у меня получилась. Функция работает без ошибок на конвертирует кодировку не правильно:
Public Function CP1251toUTF8(ByVal Text As String) As String
Dim bufer As String = ""
Dim i As Long, IC As Long
IC = Len(Text)
For i = 1 To IC
bufer = bufer & myConvertToUTF8(Mid$(Text, i, 1))
Next
CP1251toUTF8 = bufer
End Function
Private Function myConvertToUTF8(ByVal Character As String) As String
If Character = "Ё" Then
myConvertToUTF8 = Chr(208) & Chr(129)
ElseIf Character = "ё" Then
myConvertToUTF8 = Chr(209) & Chr(145)
ElseIf Asc(Character) >= 192 And Asc(Character) <= 223 Then
myConvertToUTF8 = Chr(208) & Chr(Asc(Character) - 48)
ElseIf Asc(Character) >= 224 And Asc(Character) <= 239 Then
myConvertToUTF8 = Chr(208) & Chr(Asc(Character) - 48)
ElseIf Asc(Character) >= 240 And Asc(Character) <= 255 Then
myConvertToUTF8 = Chr(209) & Chr(Asc(Character) - 112)
Else
myConvertToUTF8 = Character
End If
End Function
Может кто знает как конвентировать строку в кодировке Windows-1251 в UTF-8 кодировку. Как открывать файл с кодировкой windows-1251 я знаю, но мне нужно именно перекодирование строки!!!
Если кто сталкивался с этой проблемой, то пожалуйста помогите!