:: Visual Foxpro, Foxpro for DOS
Декодер для "=?utf-8?Q?...."
Равиль
Автор

Сообщений: 6547
Откуда: Уфа
Дата регистрации: 01.08.2003
Всем привет ! Что-то туплю не могу найти для Quoted-printable

Разбираю почтовые заголовки, например :

lcFromEncoded = "From: =?utf-8?Q?=D0=90=D0=BB=D1=8C=D1=84=D0=B0-=D0=91=D0=B0=D0=BD=D0=BA?= <''.phorum_html_encode('inf@alfabank.ru').''>"
lcFromDecoded = ?


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Декодер для "=?utf-8?Q?...."
Равиль
Автор

Сообщений: 6547
Откуда: Уфа
Дата регистрации: 01.08.2003
кое что нашел - надо потестить
forum.foxclub.ru


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Декодер для "=?utf-8?Q?...."
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
не = что то заканчивается, непрерывеное, то вроде басе64 можно примерить

() Сейчас малореально нахаляву понять текст (при помощи штатных средств языка, типа STRCONV)? все стало таким, как учили в школах, сложным

Если Саша, то аватару смени



Исправлено 2 раз(а). Последнее : of63, 13.09.22 19:48
Ratings: 0 negative/0 positive
Re: Декодер для "=?utf-8?Q?...."
Равиль
Автор

Сообщений: 6547
Откуда: Уфа
Дата регистрации: 01.08.2003
of63
не = что то заканчивается, непрерывеное, то вроде басе64 можно примерить ...

Приветствую, в отпуске был толком не смотрел )
но онлайн кодировщики определяют как QP-кодировка,
например :

dencode.com

похоже надо подточить функцию отсюда - чуток кривит )

forum.foxclub.ru


------------------
Тяжело согнать курсором муху с монитора ...




Исправлено 1 раз(а). Последнее : Равиль, 21.09.22 11:09
Ratings: 0 negative/0 positive
Re: Декодер для "=?utf-8?Q?...."
Joys

Сообщений: 3509
Откуда: Старая Русса
Дата регистрации: 25.06.2000
=?utf-8?Q?=D0=90=D0=BB=D1=8C=D1=84=D0=B0-=D0=91=D0=B0=D0=BD=D0=BA?=
Это говорит, что QP кодировка. для base64 стояло бы B


------------------
Ratings: 0 negative/0 positive
Re: Декодер для "=?utf-8?Q?...."
Равиль
Автор

Сообщений: 6547
Откуда: Уфа
Дата регистрации: 01.08.2003
Joys
=?utf-8?Q?=D0=90=D0=BB=D1=8C=D1=84=D0=B0-=D0=91=D0=B0=D0=BD=D0=BA?=
Это говорит, что QP кодировка. для base64 стояло бы B

Clear
? DecodeQP("From: =?utf-8?Q?=D0=90=D0=BB=D1=8C=D1=84=D0=B0-=D0=91=D0=B0=D0=BD=D0=BA?= <''.phorum_html_encode('inf@alfabank.ru').''>")
Procedure DecodeQP
Lparameters tcStr
If ! '=?utf-8?Q?' $ m.tcStr && Не QP-кодировка
Return m.tcStr
Endif
Local i
For i = 128 To 255
tcStr = Strtran(tcStr, '=' + Right(Transform(m.i,'@0'), 2), Chr(m.i))
Next
tcStr = Strtran(m.tcStr, '=?utf-8?Q?', '')
tcStr = Strtran(m.tcStr, '?=', '')
Return Strconv(m.tcStr, 11)


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Декодер для "=?utf-8?Q?...."
Joys

Сообщений: 3509
Откуда: Старая Русса
Дата регистрации: 25.06.2000
Там помниться еще с этой кодировкой какая-то фигня с переносами. Вернее не так. итоговая закодированная строка в QP может иметь длину макс 75 символов. Потом ставится окончание строки ?= и перенос и с новой строки опять =?utf-8?Q? ну или вместо utf-8 windows-1251


------------------
Ratings: 0 negative/0 positive
Re: Декодер для "=?utf-8?Q?...."
Равиль
Автор

Сообщений: 6547
Откуда: Уфа
Дата регистрации: 01.08.2003
Joys
Там помниться еще с этой кодировкой какая-то фигня с переносами. Вернее не так. итоговая закодированная строка в QP может иметь длину макс 75 символов. Потом ставится окончание строки ?= и перенос и с новой строки опять =?utf-8?Q? ну или вместо utf-8 windows-1251

Да ... уже сталкиваюсь с этим.
Вот более менее сносно работающий вариант :

Clear
? DecodeQP('From: =?utf-8?Q?=D0=90=D0=BB=D1=8C=D1=84=D0=B0-=D0=91=D0=B0=D0=BD=D0=BA?= <''.phorum_html_encode('inf@alfabank.ru').''>') && QP кодировка
? DecodeQP('From: =?UTF-8?B?0JPQvtGB0YPRgdC70YPQs9C4?= <''.phorum_html_encode('no-reply@gosuslugi.ru').''>') && BASE64 кодировка
? DecodeQP('From: РћРћРћ "Газпром межрегионгаз Уфа" <''.phorum_html_encode('mlist@bashgaz.ru').''>') && utf-8 незакодированный
Procedure DecodeQP
******************
Lparameters tcStr
tcStr = Strtran(m.tcStr, CHR(2)+CHR(1), '') && какой-то мусор в конце строки
Do Case
Case '?Q?' $ m.tcStr Or '?q?' $ m.tcStr && QP-кодировка
tcStr = Strtran(m.tcStr, '?q?', '?Q?')
tcStr = Strtran(m.tcStr, '=?UTF-8', '=?utf-8')
Local i
For i = 128 To 255
tcStr = Strtran(tcStr, '=' + Right(Transform(m.i,'@0'), 2), Chr(m.i))
Next
tcStr = Strtran(m.tcStr, '?=', '')
tcStr = Strtran(m.tcStr, '=20', ' ')
Do Case
Case '=?utf-8' $ m.tcStr
tcStr = Strtran(m.tcStr, '=?utf-8?Q?', '')
tcStr = Strconv(m.tcStr, 11)
Case '=?windows-1251' $ m.tcStr
tcStr = Strtran(m.tcStr, '=?windows-1251?Q?', '')
Endcase
Case '?B?' $ m.tcStr Or '?b?' $ m.tcStr && BASE64-кодировка
tcStr = Strtran(m.tcStr, '?b?', '?B?')
tcStr = Strtran(m.tcStr, '=?UTF-8', '=?utf-8')
Local lcStr1, lcStr2
lcStr1 = Strextract(m.tcStr, '', '=?utf-8?B?') && незакодированная часть слева
lcStr2 = Strextract(m.tcStr, '?=') && незакодированная часть справа
tcStr = Strextract(m.tcStr, '=?utf-8?B?', '?=')
tcStr = Strconv(Strconv(m.tcStr, 14), 11)
tcStr = m.lcStr1 + m.tcStr + m.lcStr2
Otherwise && только utf-8
tcStr = Strconv(m.tcStr, 11)
Endcase
Return m.tcStr


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 26 (Гостей: 26)

© 2000-2024 Fox Club 
Яндекс.Метрика