Главная страница
    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
2-1207649935
Семен Кевларвестов
2008-04-08 14:18
2008.05.04
Чем можно скрыть окно ToolTip?


15-1205857406
Guezt
2008-03-18 19:23
2008.05.04
дефицит информации по SDK. АСКОН-Компас


15-1206250033
Denis__
2008-03-23 08:27
2008.05.04
Photoshop


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


3-1196666491
zorik
2007-12-03 10:21
2008.05.04
одновременное изменение первичного и внешнего ключей





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский