Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Что за кодировка, кто-нибудь знает? Добавлено: 15.10.06 01:09  

Автор вопроса:  Neco | Web-сайт: neco.pisem.net | ICQ: 247906854 
=F3 = =D5=D7=C1=D6=C5=CE=C9=C5=CD, =E4=C5=C7=D4=D1=D2=A3=D7 = =EB=CF=CE=D3=D4=C1=CE=D4=C9=CE

=D7=C5=C4=D5=DD=C9=CA =D3=D0=C5=C3=C9=C1=CC=C9=D3=D4 = =CF=D4=C4=C5=CC=C1 =D2=C1=DA=D7=C9=D4=C9=D1 = =C6=C9=CE=C1=CE=D3=CF=D7=D9=C8 =D0=CF=D2=D4=C1=CC=CF=D7, =

=E4=E9=F4, =E1=EF = =EB=C1=DA=CB=CF=CD=CD=C5=D2=C3=C2=C1=CE=CB

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #1
Добавлено: 15.10.06 01:24
Кажется это кодировка для почтовых сообщений...

Ответить

Номер ответа: 2
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #2
Добавлено: 15.10.06 01:57
гы-гы, смешно. :)

в общем, вопрос снят частично - написал функцию:
    Private Shared Function ParseQuotedPrintable(ByVal bad_text As String) As String
        Try
            Dim rez As String = ""
            Dim v As Integer
            Dim bldr As New StringBuilder
            bldr.Capacity = bad_text.Length - 1
            Dim cl_s As Integer
            Dim null As Char = Chr(0)
            Dim twice As String
            Dim intval As Integer
            Dim once As Char
            Do While v < bad_text.Length
                v = bad_text.IndexOf("=", v)
                If v = -1 Then Exit Do
                twice = bad_text.Substring(v + 1, 2)
                'once = null
                Try
                    If twice = vbCrLf Then
                        bldr.Append(bad_text.Substring(cl_s, v - cl_s))
                        'bldr.Append(" ";)
                        cl_s = v + 3
                        Exit Try
                    Else
                        intval = CInt("&H" + twice)
                    End If
                    If intval < 256 Then
                        'once = Chr(intval)
                        bldr.Append(bad_text.Substring(cl_s, v - cl_s))
                        bldr.Append(Chr(intval))
                        cl_s = v + 3
                    End If
                Catch ex As Exception
                End Try
                'If once <> null Then
                '    bldr.Append(bad_text.Substring(cl_s, v - cl_s))
                '    bldr.Append(once)
                '    cl_s = v + 3
                'End If
                v += 1
            Loop
            bldr.Append(bad_text.Substring(cl_s))
            rez = bldr.ToString
            Return rez
        Catch ex As Exception
            Throw ex
        End Try
    End Function


Обратите внимание на комменты - первоначально функция не удаляла сочетания "="+vbcrlf из текста и что примечательно - тот первоначальный алгоритм работал ГОРАЗДО медленнее, хотя действий в нём совершалось меньше. Текущий разбирает пачку писем и глазом не успеваю моргнуть, а тот задумывался секунд на пять.
Счас времени нет искать узкое место, просто интересно как-то...

Ответить

Номер ответа: 3
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #3
Добавлено: 15.10.06 02:26
гы-гы, смешно. :)

Мне тоже.:)
Вот только юмора не уловил?:)

Ответить

Номер ответа: 4
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #4
Добавлено: 15.10.06 02:30
да это только мне и должно быть смешно. :)

просто я уже битую неделю кочевряжусь над разборщиком писем и твоё высказывание на этом фоне очень прикольно смотрелось. для меня...

Ответить

Номер ответа: 5
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #5
Добавлено: 15.10.06 02:39
Понятно.:)
koi-8-r?

Ответить

Номер ответа: 6
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #6
Добавлено: 15.10.06 09:17
не - это content-transfer-encoding=quoted-printable

Ответить

Номер ответа: 7
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #7
Добавлено: 15.10.06 11:53
quoted-printable - стандартная кодировка? Кажтся так?

Ответить

Номер ответа: 8
Автор ответа:
 BUG(O)R



ICQ: 827887 

Вопросов: 13
Ответов: 142
 Web-сайт: hunger.ru
 Профиль | | #8
Добавлено: 15.10.06 14:30
Когда речь идёт об оптимизации не могу сдержать себя и не поломать над задачей голову:)
Как вам такой вариант:

Private Sub Command1_Click()
Text1.Text = Decode(Text1.Text)
End Sub

Function Decode(lpData As String) As String
    Dim SubString As String, EncodeString As String, i As Integer, j As Integer
    EncodeString = lpData
    i = Len(lpData)
    j = 1
    While i > 0
        SubString = Mid(EncodeString, j, 2)
        If SubString Like "[A-F0-9][A-F0-9]" Then
            EncodeString = Replace(EncodeString, SubString, Chr(Val("&H" & SubString & "&";)), 1, 1)
            j = j + 1
        End If
        i = i - 1
        j = j + 1
    Wend
    ;Decode = Replace(EncodeString, "=", "";)
End Function


Нужно ещё правда немного доработать его. Но кому надо измерьте скорость, в частности интересно будет сравнить с методом Neco.

Если загнать текст в сабже, то на выходе имеем:

С уважением, Дегтярёв Константин

ведущий специалист отдела развития финансовых порталов,

ДИТ, АО Казкоммерцбанк

Ответить

Номер ответа: 9
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #9
Добавлено: 15.10.06 18:21
а если внутри тэгов попадётся сочетание английских букв ABBA, к примеру? :)

Ответить

Номер ответа: 10
Автор ответа:
 BUG(O)R



ICQ: 827887 

Вопросов: 13
Ответов: 142
 Web-сайт: hunger.ru
 Профиль | | #10
Добавлено: 15.10.06 18:24
Так каждый символ кодируется одним байтом, такое сочетание внутри тегов == попасться не может.

PS Заменять все символы = надо до обработки. Мой косяк)

Ответить

Номер ответа: 11
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #11
Добавлено: 15.10.06 19:09
кодируется не каждый символ - только русские буквы.
кстати, тут дело даже не в тэгах - просто любой английский текст в верхнем регистре и амба - лучше ориентироваться на знак равенства - он точно заменяется на =3D.
да в общем тут лучше официальный формат читать, я потому и спрашивал, но мне не очень критично - главное чтоб файлы из base64 корректно выливались, поскольку это с бабками связано, а с текстом просто для удобства использования вожусь.

Ответить

Номер ответа: 12
Автор ответа:
 BUG(O)R



ICQ: 827887 

Вопросов: 13
Ответов: 142
 Web-сайт: hunger.ru
 Профиль | | #12
Добавлено: 20.10.06 11:13
ну в таком случае это немного видоизменит функцию, нисколько не усложнив её и не замедлив, лениво в пятницу студию запускать, не будем спорить :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам