powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Расшифровать MIME в поле Subject
2 сообщений из 2, страница 1 из 1
Расшифровать MIME в поле Subject
    #36476170
deramik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Анализирую лог-файл анти-спам сервера. CSV открываю в Excele.
Там Темы указаны в формате MIME-Encoded
Например =?windows-1251?B?Znc6IM/w4Ofk7ejq6CDt4CDR5evo4+Xw5Q==?=
или
=?koi8-r?B?8M8g0M/Xz8TVIOXL08XM0Q==?=
Не подскажите чем можно привести их в читаемый вид в Excel'е?
Спасибо.
...
Рейтинг: 0 / 0
Расшифровать MIME в поле Subject
    #36476313
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу, ты бы их еще в 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
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Расшифровать MIME в поле Subject
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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