Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];

Вниз

Помогите конвернтнуть 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
6-1185889040
keal
2007-07-31 17:37
2008.05.04
алгоритм работы сетевого чата на основе UDP


2-1207750959
иванс
2008-04-09 18:22
2008.05.04
SC_DRAGMOVE


2-1207566901
assassin8899
2008-04-07 15:15
2008.05.04
DBNavigator


2-1207681325
Ri2008
2008-04-08 23:02
2008.05.04
WM_POWERBROADCAST


6-1185440244
cosinus
2007-07-26 12:57
2008.05.04
Как послать e-mail с машины без единой почтовой программы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский