05.11.2009, 16:05 | #1 |
Участник
|
OutLook UTF-8 body (кодировка KOI8-U)
Доброго времени суток.
Попытался сегодня настроить рассылку почты в аксапте.(стандарт)(sysemailbroadcast) И столкнулся с проблемой. Сабж пишется нормально - на русском, а тело письма в кодировке KOI8-U.(нечитабельно) Поиск по теме результатов не дал. Может быть кто-то сталкивался с подобной проблемой ? |
|
06.11.2009, 10:42 | #2 |
Участник
|
У вас DAX 2009?
Если да, то посмотрите класс формирования писем, при генерации тела письма не передается код кодировки - это надо подправить. |
|
06.11.2009, 12:20 | #3 |
Участник
|
Цитата:
К тому же перепробывал все ваоианты. и SYSMailer и т.д. Нигде не нашел нормального решения для рассылки писем. |
|
06.11.2009, 14:33 | #4 |
Участник
|
когдато давно взято с этого форума, возможно поможет
X++: #define.CP_ACP(0) #define.CP_UTF8(65001) static str Utf2Ansi(str Utf8) { DLL _kernelDLL = new DLL("KERNEL32"); DLLFunction MultiByteToWideChar = new DLLFunction(_kernelDLL, "MultiByteToWideChar"); DLLFunction WideCharToMultiByte = new DLLFunction(_kernelDLL, "WideCharToMultiByte"); Binary buf, buf1; int len; str res; res = ""; if (Utf8) { buf = new Binary(strlen(Utf8)); buf.string(0, Utf8); buf1 = new Binary((strlen(Utf8) + 1) * 2); MultiByteToWideChar.returns(ExtTypes::DWord); MultiByteToWideChar.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord); if (MultiByteToWideChar.call(#CP_UTF8, 0, buf, strlen(Utf8) + 1, buf1, strlen(Utf8) + 1)) { WideCharToMultiByte.returns(ExtTypes::DWord); WideCharToMultiByte.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord, ExtTypes::DWord, ExtTypes::DWord); len = WideCharToMultiByte.call(#CP_ACP, 0, buf1, strlen(Utf8) + 1, buf, 0, 0, 0); if (len) { buf = new Binary(len); if (WideCharToMultiByte.call(#CP_ACP, 0, buf1, strlen(Utf8) + 1, buf, len, 0, 0)) { res = buf.string(0); } } } } return res; }
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
|
За это сообщение автора поблагодарили: Ivan Beshkurov (1). |
06.11.2009, 15:26 | #5 |
Участник
|
Цитата:
Сообщение от ivas
когдато давно взято с этого форума, возможно поможет
X++: #define.CP_ACP(0) #define.CP_UTF8(65001) static str Utf2Ansi(str Utf8) { DLL _kernelDLL = new DLL("KERNEL32"); DLLFunction MultiByteToWideChar = new DLLFunction(_kernelDLL, "MultiByteToWideChar"); DLLFunction WideCharToMultiByte = new DLLFunction(_kernelDLL, "WideCharToMultiByte"); Binary buf, buf1; int len; str res; res = ""; if (Utf8) { buf = new Binary(strlen(Utf8)); buf.string(0, Utf8); buf1 = new Binary((strlen(Utf8) + 1) * 2); MultiByteToWideChar.returns(ExtTypes::DWord); MultiByteToWideChar.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord); if (MultiByteToWideChar.call(#CP_UTF8, 0, buf, strlen(Utf8) + 1, buf1, strlen(Utf8) + 1)) { WideCharToMultiByte.returns(ExtTypes::DWord); WideCharToMultiByte.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord, ExtTypes::DWord, ExtTypes::DWord); len = WideCharToMultiByte.call(#CP_ACP, 0, buf1, strlen(Utf8) + 1, buf, 0, 0, 0); if (len) { buf = new Binary(len); if (WideCharToMultiByte.call(#CP_ACP, 0, buf1, strlen(Utf8) + 1, buf, len, 0, 0)) { res = buf.string(0); } } } } return res; } На этом моменте падает в дебаггер Пока понять не могу в чем дело. На самом деле пытаюсь сделать наоборот из "что-то" в UTF8 , т.к. АутЛук по умолчанию его использует |
|
06.11.2009, 15:33 | #6 |
Участник
|
может строка пустая?
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
06.11.2009, 15:48 | #7 |
Участник
|
|
|
|
|