Форум: "Начинающим";
Текущий архив: 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