Главная страница
    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.51 MB
Время: 0.004 c
2-1260531371
alex ford
2009-12-11 14:36
2010.02.07
закинуть в ресурсы файлы


2-1260712096
serhiyiv
2009-12-13 16:48
2010.02.07
TStringList


4-1228651381
Fildy
2008-12-07 15:03
2010.02.07
определение родильского PID


11-1210599832
Valera
2008-05-12 17:43
2010.02.07
Проблема со ScrollBox.


4-1228799718
Skyle
2008-12-09 08:15
2010.02.07
Непонятки с USB сканером с эмуляцией COM. Не работает RXFLAG.





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