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

Вниз

Помогите перевести str1 := =?UTF-8?B?0JrQsNC6INC/0L7QsdC...   Найти похожие ветки 

 
abhtr   (2009-12-09 16:08) [0]

Перепробовал все, что мог найти в инете(или почти все:о) ))
Не получается!!!
 str1 := "0JrQsNC6INC/0L7QsdC+0YDQvtGC0Ywg0LHQtdC00YMg0YEg0LrQvtC00LjRgNC+0LLQutC+0LkuaHRt";
 //str1 := "=?UTF-8?B?0JrQsNC6INC/0L7QsdC+0YDQvtGC0Ywg0LHQtdC00YMg0YEg0LrQvtC00LjRgNC+0LLQutC+0LkuaHRt?=";
 memInfo.Lines.Add("Исходный текст: "+str1);
 //str1 := AnsiToUtf8(str1);
 //str2 := Utf8ToAnsi(str1);
 //str1 := utf8decode(str1);
 //str1 := utf8encode(str1);
 //str2 := UTF8Decode(str1);
 //str1 := UTF8ToStr(str1);

 //memInfo.Lines.Add("Преобразованный текст: "+str2);

 memInfo.Lines.Add(UTF8ToAnsi(str1)); //Заносим строку в Мемо с перекодировкой


Помогите, пожалуйста. Подскажите, что делаю НЕ ТАК?


 
clickmaker ©   (2009-12-09 16:09) [1]

а с чего ты решил, что это утф-8?


 
Медвежонок Пятачок ©   (2009-12-09 16:10) [2]

тут невооруженным глазом видно, что в строке не утф, а base64.
внутри которого возможно утф.


 
sniknik ©   (2009-12-09 16:11) [3]

str1 - Как побороть беду с кодировкой.htm
Base64 → UTF-8  → Ansi


 
abhtr   (2009-12-09 16:16) [4]


> тут невооруженным глазом видно, что в строке не утф, а base64

Подскажите, как Вы это определили?

А какая функция
> Base64 → UTF-8

Может можно сразу
> Base64 → Ansi

???


 
Медвежонок Пятачок ©   (2009-12-09 16:20) [5]

Может можно сразу
> Base64 → Ansi


можно. но такая смешная ерунда получится ....


 
Медвежонок Пятачок ©   (2009-12-09 16:22) [6]

А какая функция
> Base64 → UTF-8


такой нету.
есть
base64 -> то_что_было_до_того_как_применили_base64


 
RWolf ©   (2009-12-09 16:23) [7]


> можно. но такая смешная ерунда получится ....

что именно получается?


 
Медвежонок Пятачок ©   (2009-12-09 16:25) [8]

что именно получается?

примерно то же самое, что получается у секретарши блондинки, которая говорила, что печатает 3000 знаков в минуту


 
abhtr   (2009-12-09 16:37) [9]

Да, смешно :о)))
Но, тем не менее.
Вот нашел совет:
КАК РАСКОДИРОВАТЬ:
Воспользуетесь программкой mime64, для этого - запишите письмо (вместе с заголовком) в файл, последняя строка кода должна быть последней строкой в файле и раскодируйте в среде MSDOS с помощью команды:
mime64.exe infile [outfile]


Может кто-нибудь предложить что-нибудь получше?


 
Anatoly Podgoretsky ©   (2009-12-09 16:40) [10]

> abhtr  (09.12.2009 16:08:00)  [0]

Сначала надо отрезать "=?UTF-8?B?", остаток преобразовать из Base64. Затем можещб применить одну из функций UTF8
Посмотри может у тебя уже есть конвертор в библиотеке


 
abhtr   (2009-12-09 16:48) [11]

остаток преобразовать из Base64
с помощью mime.exe? Или есть все-таки другой способ?


 
Медвежонок Пятачок ©   (2009-12-09 16:54) [12]

способов много.
от TidDecoderMIME до CryptStringToBinary из криптоапи


 
clickmaker ©   (2009-12-09 16:55) [13]

http://www.google.ru/#hl=ru&source=hp&q=base64decode+delphi&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=base64decode+delphi&fp=2eb01c20b443f195


 
Игорь Шевченко ©   (2009-12-09 17:22) [14]


> Перепробовал все, что мог найти в инете(или почти все:о)
> ))


http://delphimaster.net/view/1-1259145289/


 
abhtr   (2009-12-10 12:40) [15]

Всем спасибо! :о)
Получился вариант

> Base64 → UTF-8  → Ansi

но возникла дополнительная досадная проблема в функции:

function UTF8ToStr(Value: String): String;
{Convert string from UTF-8 format into ASCII}
var
buffer: Pointer;
BufLen: LongWord;
qqq : string;
begin
BufLen := Length(Value) + 4;
GetMem(buffer, BufLen);
FillChar(buffer^, BufLen, 0);
MultiByteToWideChar(CP_UTF8, 0, @Value[1], BufLen - 4, buffer, BufLen);
Result := WideCharToString(buffer);

FreeMem(buffer, BufLen);   //Почему-то не проходит. ОШИБКА
end;

возникает ошибка:

Project ReceptMail.exe raised exception class EAccessViolation with message "Access violation at address 00401C11 in module "ReceptMail.exe". Write of address 00000001". Process stopped. Use Step or Run to continue.


Подскажите, пожалуйста, как можно избежать этой ошибки


 
clickmaker ©   (2009-12-10 12:49) [16]

> BufLen := Length(Value) + 4;

откуда магическое число 4?


 
Игорь Шевченко ©   (2009-12-10 12:50) [17]


> Подскажите, пожалуйста, как можно избежать этой ошибки


Использовать готовую функцию преобразования из UTF8 в Ansi а не писать свою


 
abhtr   (2009-12-10 12:59) [18]


> откуда магическое число 4?

Взял из: http://politics.delphimaster.net/view/1-1259145289/


> Использовать готовую функцию преобразования из UTF8 в Ansi

Точно!
Взял str2 := Utf8ToAnsi(str1);
И все пошло!!! :о)))
Большое спасибо!!!



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

Форум: "Начинающим";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.004 c
15-1259935064
@!!ex
2009-12-04 16:57
2010.02.07
Как изменить путь к make?


2-1260371106
Timur&Co
2009-12-09 18:05
2010.02.07
Прозрачность TListView


2-1259683014
Evgnevius
2009-12-01 18:56
2010.02.07
Вывода битмапа по маске и под углом


1-1211540801
ply
2008-05-23 15:06
2010.02.07
сменить цвет шрифта ячейки... DevExpress


15-1259624132
Kerk
2009-12-01 02:35
2010.02.07
Дживс и Вустер





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