Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.04;
Скачать: CL | DM;

Вниз

Помогите конвернтнуть UTF8 в Win1251   Найти похожие ветки 

 
Layner ©   (2008-04-09 09:11) [0]

Есть строка "=?utf-8?Q?=D0=A0=D0=B0=D0=BD=D0=B6=", это название файла вложения в теле письма.. надо его конвернуть в удобочитаемый вид, а файл точно по русски обзывается. Пробовал Utf8ToAnsi, но после нее надо еще ф-ю преобразования в 1251? Подскажите плз. :(


 
Layner ©   (2008-04-09 09:26) [1]

UTF8Decode тоже не понимает, оставляет UTF8 текст как есть... :(((


 
clickmaker ©   (2008-04-09 09:28) [2]

что-то не похоже это на утф...


 
Layner ©   (2008-04-09 09:37) [3]

clickmaker, а почему? заголовок даже есть в начале...

В общем история такая, работаю с Инди компанентами, TIdPOP. Приходят аттачи, раньше все шло на английском в названиях файла, сейчас на русском стали слать, будь они не ладны... название файла выдергиваю так
TIdAttachment(Msg.MessageParts.Items[цикл по вложениям]).Filename

Тогда может такой вариант, а может Инди и умеет сам преобразовывать? Не надо может мне мучатся, и руками делать преобразование?


 
clickmaker ©   (2008-04-09 09:52) [4]

это похоже на бинарное представление, т.е. как строку его Utf8ToAnsi не поймет


 
Reindeer Moss Eater ©   (2008-04-09 10:05) [5]

Q? - опускай
все  _ переводи в пробел.
все =B0 переводи в #strtoint($B0)
последний = опускай

после чего получишь utf8


 
han_malign ©   (2008-04-09 10:18) [6]

=?utf-8?Q?=D0=A0=D0=B0=D0=BD=D0=B6=?=

RFC-2047
  encoded-word = "=?" charset "?" encoding "?" encoded-text "?="

Q - означает Quoted printable, также может быть B - Base64(RFC-2045)
для Quoted printable, в данном случае
=XX - шестнадцатиричный код октета, "_" - пробел, остальные символы как есть
например
     =?Windows-1251?q?this=20is=20some_=F2=E5=EA=F1=F2?=
это
     "this is some текст"


 
Layner ©   (2008-04-09 10:27) [7]

Спасибо всем! ;)
Блин сложно то как все :(((


 
Dmitrij   (2008-04-09 12:05) [8]

Почти готовый алгоритм разбора есть в библиотеке Indy файл idCoderHeader.pas
функция DecodeHearder (или EncodeHeader точно не помню)
http://indyproject.org/Sockets/index.EN.aspx


 
Anatoly Podgoretsky ©   (2008-04-09 15:31) [9]

Здесь на самом деле две транспортных "кодировки"/"упаковки".
И формат заголовка
Надо сначала удалить заголовок, потом перекодировать по второй транспортной кодировке, это второй элемент, затем по первой в Юникод, и только потом можешь перекодировать из Юникода в 1251
Многие сетевые библиотеки содержат готовые функции для этого.


 
Сергей М. ©   (2008-04-09 15:40) [10]

В кач-ве иллюстрации:

..
 re: TRegExpr;
 dqp: TIdDecoderQuotedPrintable;
 s: String;
..

 s := "=?utf-8?Q?=D0=A0=D0=B0=D0=BD=D0=B6=";
 re.Expression := "^=\?(\S+?)\?(\S+?)\?(.*)";
 if re.Exec(s) then begin
   showmessage(re.Match[1]); //utf-8
   showmessage(re.Match[2]); //Q
   showmessage(re.Match[3]); //=D0=A0=D0=B0=D0=BD=D0=B6=
   showmessage(utf8toansi(dqp.DecodeString(re.Match[3])));
   end;



Страницы: 1 вся ветка

Текущий архив: 2008.05.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
2-1207637311
bagos
2008-04-08 10:48
2008.05.04
findcomponent в потоке


2-1207651552
asdf2
2008-04-08 14:45
2008.05.04
Как поймать момент покидания курсором контрола?


6-1185712732
malyar
2007-07-29 16:38
2008.05.04
idtcpserver посылка пакетов всем подключенным клиентам


2-1207728682
rashkov
2008-04-09 12:11
2008.05.04
Последнии символы


15-1205932450
sniknik
2008-03-19 16:14
2008.05.04
Сохранить картинку (jpg/bmb/...) из "блочного" редактора