Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2015, 21:40   #1
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию Delphi7 Проблема с кодировкой

Получил письмо с помощью pop3send из библиотеки synapse.
Имею такой текст сообщения
Код:

--===============1249829919==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64

0JjQvdGE0L7RgNC80LDRhtC40Y8g0KbQtdC90YLRgNCwINC/0YDQvtCz0L3QvtC30L7QsiDQutC+
0YHQvNC40YfQtdGB0LrQvtC5INC/0L7Qs9C+0LTRiyAo0JjQl9Cc0JjQoNCQ0J0pCtC90LAgMDgg
0YfQsNGB0L7QsiAzMSDQvNCw0YDRgtCwIDIwMTUg0LMuCgozMCDQvNCw0YDRgtCwINC80LDQs9C9
0LjRgtC90L7QtSDQv9C+0LvQtSDQl9C10LzQu9C4INC80LXQvdGP0LvQvtGB0Ywg0L7RgiDRgdC/
0L7QutC+0LnQvdC+0LPQviDQtNC+INCy0L7Qt9C80YPRidC10L3QvdC+0LPQvi4gMzAg0LzQsNGA
0YLQsCAyMDE1INCaLdC40L3QtNC10LrRgdGLINCyINCw0LzQtdGA0LjQutCw0L3RgdC60L7QuSDQ
t9C+0L3QtSAyMTExMjQyMiwg0LIg0JzQvtGB0LrQstC1ICjQmNCX0JzQmNCg0JDQnSkgLSAyMjIy
MjExMiwg0YHRgNC10LTQvdC10YHRg9GC0L7Rh9C90YvQuSDQkNGALdC40L3QtNC10LrRgSAtIDks
INC60L7QtCAxMTI0LgoK0J/RgNC+0LPQvdC+0Lcg0LPQtdC+0LzQsNCz0L3QuNGC0L3QvtC5INC+
0LHRgdGC0LDQvdC+0LLQutC4LCDQvNCw0LrRgdC40LzQsNC70YzQvdGL0YUg0YLRgNGR0YXRh9Cw
0YHQvtCy0YvRhSDQmnAt0LjQvdC00LXQutGB0L7QsiDQuCDRgdGA0LXQtNC90LXRgdGD0YLQvtGH
0L3Ri9GFINCQcC3QuNC90LTQtdC60YHQvtCyINC90LAg0YHQu9C10LTRg9GO0YnQuNC1INC00L3Q
uDoKCjMxINC80LDRgNGC0LAuINCe0LHRgdGC0LDQvdC+0LLQutCwIC0g0L7RgiDRgdC/0L7QutC+
0LnQvdC+0Lkg0LTQviDRgdC70LDQsdC+0LLQvtC30LzRg9GJ0LXQvdC90L7QuS4g0JLQvtC30LzQ
vtC20L3RiyDQvtGC0LTQtdC70YzQvdGL0LUg0LLQvtC30LzRg9GJ0ZHQvdC90YvQtSDQv9C10YDQ
uNC+0LTRiyAo0Jo9MS0zMCUsINCaPTItNDAlLCDQmj0zLTI1JSkuINCQ0YA9Nywg0LrQvtC0IDEx
MjIuCjAxINCw0L/RgNC10LvRjy4g0J7QsdGB0YLQsNC90L7QstC60LAgLSDQvtGCINGB0L/QvtC6
0L7QudC90L7QuSDQtNC+INGB0LvQsNCx0L7QstC+0LfQvNGD0YnQtdC90L3QvtC5ICjQmj0xLTMw
JSwg0Jo9Mi00MCUsINCaPTMtMjUlKS4g0JDRgD02LCDQutC+0LQgMTExMi4KMDIg0LDQv9GA0LXQ
u9GPLiDQntCx0YHRgtCw0L3QvtCy0LrQsCAtINC+0YIg0YHQv9C+0LrQvtC50L3QvtC5INC00L4g
0YHQu9Cw0LHQvtCy0L7Qt9C80YPRidC10L3QvdC+0LkgKNCaPTEtMTAlLCDQmj0yLTQ1JSwg0Jo9
My00MCUpLiDQkNGAPTgsINC60L7QtCAxMTIyLgowMyDQsNC/0YDQtdC70Y8uINCe0LHRgdGC0LDQ
vdC+0LLQutCwIC0g0L7RgiDRgdC/0L7QutC+0LnQvdC+0Lkg0LTQviDRgdC70LDQsdC+0LLQvtC3
0LzRg9GJ0LXQvdC90L7QuS4g0JLQtdGA0L7Rj9GC0L3RiyDQstC+0LfQvNGD0YnRkdC90L3Ri9C1
INC/0LXRgNC40L7QtNGLICjQmj0xLTUlLCDQmj0yLTIwJSwg0Jo9My0yNSUsINCaPTQtNDUlKS4g
0JDRgD0xNSwg0LrQvtC0IDEyNDQuCjA0INCw0L/RgNC10LvRjy4g0J7QsdGB0YLQsNC90L7QstC6
0LAgLSDQvtGCINGB0L/QvtC60L7QudC90L7QuSDQtNC+INGB0LvQsNCx0L7QstC+0LfQvNGD0YnQ
tdC90L3QvtC5LiDQktC+0LfQvNC+0LbQvdGLINCy0L7Qt9C80YPRidGR0L3QvdGL0LUg0L/QtdGA
0LjQvtC00YsgKNCaPTEtNSUsINCaPTItMzAlLCDQmj0zLTM1JSwg0Jo9NC0yNSUpLiDQkNGAPTEw
LCDQutC+0LQgMTEyNC4KMDUg0LDQv9GA0LXQu9GPLiDQntCx0YHRgtCw0L3QvtCy0LrQsCAtINC+
0YIg0YHQv9C+0LrQvtC50L3QvtC5INC00L4g0YHQu9Cw0LHQvtCy0L7Qt9C80YPRidC10L3QvdC+
0LkgKNCaPTEtMTAlLCDQmj0yLTQ1JSwg0Jo9My00MCUpLiDQkNGAPTgsINC60L7QtCAxMTIyLgow
NiDQsNC/0YDQtdC70Y8uINCe0LHRgdGC0LDQvdC+0LLQutCwIC0g0L7RgiDRgdC/0L7QutC+0LnQ
vdC+0Lkg0LTQviDRgdC70LDQsdC+0LLQvtC30LzRg9GJ0LXQvdC90L7QuSAo0Jo9MS0zMCUsINCa
PTItNDAlLCDQmj0zLTI1JSkuINCQ0YA9Nywg0LrQvtC0IDExMjIuCjA3INCw0L/RgNC10LvRjy4g
0J7QsdGB0YLQsNC90L7QstC60LAgLSDQvtGCINGB0L/QvtC60L7QudC90L7QuSDQtNC+INGB0LvQ
sNCx0L7QstC+0LfQvNGD0YnQtdC90L3QvtC5ICjQmj0xLTMwJSwg0Jo9Mi00MCUsINCaPTMtMjUl
KS4g0JDRgD03LCDQutC+0LQgMTEyMi4KCtCg0YPQutC+0LLQvtC00LjRgtC10LvRjCDQptC10L3R
gtGA0LAg0L/RgNC+0LPQvdC+0LfQvtCyINC60L7RgdC80LjRh9C10YHQutC+0Lkg0L/QvtCz0L7Q
tNGLINCT0LDQudC00LDRiCDQoS7Qny4KOCAoNDk1KSA4NTEtMTktNzgKOCAoNDk1KSA4NTEtMDkt
MjQKCjIwMTUuMDMuMzEgMDc6NTEg0JzQodCaDQoNCi0tLQ0K0K3RgtC+INGB0L7QvtCx0YnQtdC9
0LjQtSDQv9GA0L7QstC10YDQtdC90L4g0L3QsCDQstC40YDRg9GB0Ysg0LDQvdGC0LjQstC40YDR
g9GB0L7QvCBBdmFzdC4NCmh0dHA6Ly93d3cuYXZhc3QuY29tDQo=
с помощью ресурса http://online-decoder.com/ru
смог перекодировать на русский язык, но как это сделать средствами delphi7?
Сначала думал, что несколько латинских символов отвечают за один кириллический и даже удалось вытащить из текста пару русских букв, но не тут-то было. Такое впечатление, что под один символ выделяется несколько с половиной байтов.
ivan.tiran вне форума Ответить с цитированием
Старый 07.04.2015, 22:06   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сначала из BASE64 в UTF-8, (например uses EncdDecd)
а потом из UTF-8 в WIN-1251 - MultiByteToWideChar, WideCharToMultiByte
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.04.2015, 22:11   #3
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Сначала из BASE64 в UTF-8, (например uses EncdDecd)
а потом из UTF-8 в WIN-1251 - MultiByteToWideChar, WideCharToMultiByte
А пример кода можете привести.
Скажем, я занёс эту последовательность в строку типа string, дальше, как поступить?
ivan.tiran вне форума Ответить с цитированием
Старый 07.04.2015, 22:18   #4
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию

кажись нашёл как сделать, но к сожалению проверить смогу только завтра, сейчас под рукой lazarus, а в нём не работает EncdDecd http://www.cyberforum.ru/delphi-begi...ead856842.html
Спасибо.

Последний раз редактировалось ivan.tiran; 07.04.2015 в 22:25.
ivan.tiran вне форума Ответить с цитированием
Старый 07.04.2015, 22:34   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var: s: String;
       Len: Cardinal;
      s1: WideString;
...
//  в s исходная строка -  0JjQvdGE0L7RgNC80LDRhtC40Y8g....
  s:=DecodeString(s);
  Len:=MultiByteToWideChar(CP_UTF8,0,PChar(s),Length(s),nil,0);
  SetLength(s1,Len);
  MultiByteToWideChar(CP_UTF8,0,PChar(s),Length(s),PWideChar(s1),Len);
  s:=s1;
// в s результат - Информация Центра прогнозов космической погоды (ИЗМИРАН)...
Там и ошибки могут быть, предусмотри обработку
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 07.04.2015 в 22:37.
Аватар вне форума Ответить с цитированием
Старый 08.04.2015, 06:28   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я себе такое забрал: http://delphiworld.narod.ru/base/bas...de_decode.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.04.2015, 19:26   #7
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию

спасибо огромное, работает
ivan.tiran вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодировкой GriFFoN PHP 5 28.03.2012 10:53
Проблема с кодировкой текстовой информации в Delphi7 Человек Панда Помощь студентам 9 19.07.2011 23:05
Проблема с кодировкой Furyon PHP 3 13.04.2011 17:36
Проблема с кодировкой GaJIbI4 Помощь студентам 7 05.03.2009 15:42