Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка в функции CP1251toUTF8

49K
25 сентября 2009 года
mynumber13VBA
6 / / 06.09.2009
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 = 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


Пожалуйста подскажите где ошибка в функции.
42K
25 сентября 2009 года
injhdc28
30 / / 13.03.2009
CP1251toUTF8 = bufer визиваеш сама сибя, а параметр не передаеш.
49K
26 сентября 2009 года
mynumber13VBA
6 / / 06.09.2009
Была функция на VBA для перевода строки с кодировкай windows-1251 в UTF-8:

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 я знаю, но мне нужно именно перекодирование строки!!!


Если кто сталкивался с этой проблемой, то пожалуйста помогите!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог