Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Расшифровать MIME в поле Subject / 2 сообщений из 2, страница 1 из 1
17.02.2010, 20:27
    #36476170
deramik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расшифровать MIME в поле Subject
Добрый день.
Анализирую лог-файл анти-спам сервера. CSV открываю в Excele.
Там Темы указаны в формате MIME-Encoded
Например =?windows-1251?B?Znc6IM/w4Ofk7ejq6CDt4CDR5evo4+Xw5Q==?=
или
=?koi8-r?B?8M8g0M/Xz8TVIOXL08XM0Q==?=
Не подскажите чем можно привести их в читаемый вид в Excel'е?
Спасибо.
...
Рейтинг: 0 / 0
17.02.2010, 22:31
    #36476313
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расшифровать MIME в поле Subject
Угу, ты бы их еще в Painter открыл.

Но если хочется поизвращаться, то можно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Option Explicit

Function B64C2B(c As String)
    Dim a As Integer
    a = Asc(c)
    If a =  43  Then B64C2B =  62  Else: If a =  47  Then B64C2B =  63  Else: _
    If a <=  57  Then B64C2B = a +  4  Else: If a <=  90  Then B64C2B = a -  65  Else: _
    If a <=  122  Then B64C2B = a -  71  Else: B64C2B =  0 
End Function

Public Function decode(SourceCell As Range) As String
    Dim re As New RegExp, matches As MatchCollection
    Dim charset As String
    Dim encoding As String
    Dim data As String, ddata As String
    Dim q As Long
    Dim ds As String
    Dim i As Integer
    
    re.Pattern = "=\?(.*?)\?(.)\?(.*?)\?="
    Set matches = re.Execute(SourceCell.Text)
    If matches.Count =  0  Then
        decode = "What is this garbage?"
        Exit Function
    End If
    
    charset = matches( 0 ).SubMatches( 0 )
    encoding = matches( 0 ).SubMatches( 1 )
    data = matches( 0 ).SubMatches( 2 )
    ddata = ""
    If encoding = "B" Then
        For i =  1  To Len(data) Step  4 
            q = B64C2B(Mid(data, i,  1 )) *  262144  + B64C2B(Mid(data, i +  1 ,  1 )) *  4096  + _
                B64C2B(Mid(data, i +  2 ,  1 )) *  64  + B64C2B(Mid(data, i +  3 ,  1 ))
            ds = Chr(Int(q /  65536 )) & Chr(Int((q Mod  65536 ) /  256 )) & Chr(q Mod  256 )
            ddata = ddata & ds
        Next
        decode = ddata
        Exit Function
    End If
    If encoding = "Q" Then
        decode = "I am too tired, do it yourself"
    End If
End Function
С кодировкой сам разбирайся.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Расшифровать MIME в поле Subject / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]