Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   Как изменить кодировку входящего сообщения Microsoft Outlook 2010 (UTF-8) (http://forum.oszone.net/showthread.php?t=326858)

obtim 18-05-2017 09:43 2737712

Как изменить кодировку входящего сообщения Microsoft Outlook 2010 (UTF-8)
 
Имеем такое письмо(в аттчае). Меняю кодировку там же и получаю опять крякозябы.
Отправитель шлет в UTF-8(это железка). Как настроить отображение в Outlook?

Iska 18-05-2017 16:48 2737851

Цитата:

Цитата obtim
Имеем такое письмо(в аттчае). »

Вы имеете. А мы — нет. Не хотите приложить само письмо (в архиве)?

obtim 18-05-2017 16:50 2737852

Сделано!

Iska 18-05-2017 17:38 2737860

obtim, это «Завершение работы системы» в ANSI/1251, закодированный как KOI8. Никакого юникода тут нет. Простой сменой кодировки в уже принятом сообщении тут не отделаешься. Разбираться Вам надо с кодировкой ещё при формировании исходящего письма.

Update: похоже, я отчасти погорячился :):
Скрытый текст



obtim 19-05-2017 09:38 2737956

Странно, у меня не срабатывает :(
У этого письма(другая система) аналогичная проблема?

Iska 19-05-2017 11:26 2737978

Цитата:

Цитата obtim
Странно, у меня не срабатывает »

obtim, Вы выбираете именно «Кириллица (Windows)» (а не «Windows-1251»)?

Цитата:

Цитата obtim
У этого письма(другая система) аналогичная проблема? »

Ага. Вот тут уже как раз UTF-8, это даже просто по самому тексту видно.
Скрытый текст

obtim 19-05-2017 11:32 2737981

Интерфейс у меня немного отличается. В аттаче.

gannet 19-05-2017 12:31 2737993

А у меня конструктивное предложение - написать скрипт
подсмотрено на просторах интернета, ну и проверено\доделано
Код:

Sub UtfToKoi8RMessageRule(Item As Outlook.MailItem)
'Естественно, для каждого правила\набора кодировок нужна своя процедура
'Указываем входящую и нужную кодировку
    Item.Body = ChangeTextCharset(Item.Body, "utf-8", "koi8-r")
End Sub

Function ChangeTextCharset(ByVal txt$, ByVal DestCharset$, _
                          Optional ByVal SourceCharset$) As String
    ' функция перекодировки (смены кодировки) текстовой строки
    ' В качестве параметров функция получает текстовую строку txt$,
    ' и название кодировки DestCharset$ (в которую будет переведён текст)
    ' Функция возвращает текст в новой кодировке
    On Error Resume Next: Err.Clear
    With CreateObject("ADODB.Stream")
        .Type = 2: .Mode = 3
        If Len(SourceCharset$) Then .Charset = SourceCharset$    ' указываем исходную кодировку
        .Open
        .WriteText txt$
        .Position = 0
        .Charset = DestCharset$    ' назначаем новую кодировку
        ChangeTextCharset = .ReadText
        .Close
    End With
End Function

И прицепить его к правилу на нужные адреса.

Iska 19-05-2017 12:43 2738002

Цитата:

Цитата obtim
Интерфейс у меня немного отличается. »

Ну, это-то понятно. У меня Office 2003, у Вас — более новой версии.

Не могу сказать, почему у Вас не выходит. Ждите коллег с аналогичной версией, может быть они что-нибудь более вменяемое подскажут.

a_axe 19-05-2017 14:09 2738036

Цитата:

Цитата Iska
Ждите коллег с аналогичной версией »

Собственно добавить к вашему решению нечего, окромя упомянутой разнице в интерфейсе:
для первого письма нужно выбрать «Кириллица (Windows)», для второго - UTF-8, после чего текст читается (2010 версия).
Скрин

gannet, любопытный вариант.

Iska 19-05-2017 14:26 2738040

a_axe, интересно — отчего у коллеги obtim сие не срабатывает?!

a_axe 19-05-2017 15:17 2738052

Цитата:

Цитата Iska
отчего у коллеги obtim сие не срабатывает?! »

Iska, я слабо разбираюсь в кодировках, но возможно это вариант, аналогичный описанному на сайте manaeff.ru (у меня не грузится, но доступна сохраненная копия поисковика):
Цитата:

На компьютере установлен Microsoft Office 2010 . При получении некоторых писем, MS Outlook 2010 не отображает кириллический текст, вместо него просто пустое место (либо кракозябры).

При анализе таких писем видно, что они созданы в кодировке Unicode (UTF-8). И даже если кодировка письма выбрана правильно, все равно текст не отображается. Чтобы увидеть текст такого письма нужно сначала выбрать любую другую кодировку , а потом снова вернуть Unicode (UTF-8).

Объяснение:
Такое поведение MS Outlook 2010 наблюдается в тех случаях, когда почтовая папка pst была создана без поддержки Unicode (UTF-8), то есть в версиях до 2007. Начиная с MS Outlook 2007, формат Юникод используется для новых файлов PST по умолчанию.

Решение:
1. Создаем файл сообщений почты (PST) в формате Office 2007 (он создастся сразу с поддержкой Unicode (UTF-8)) (см. Настройка параметров Юникод в Outlook 2007)
2. Делаем его файлом по-умолчанию
3. Настраиваем учетные записи, чтобы они складывали почту в этот файл
4. Переносим (копируем) почту из старого файла pst в новый

Теперь новые письма в кодировке Unicode (UTF-8) будут сразу нормально отображаться, а старый файл pst можно отключить в Outlook и вообще удалить из файловой системы (убедившись, что почта нормально скопировалась в новый файл).
Примечание: Если вдруг новый файл создается без поддержки Unicode (UTF-8), то придется создать новую конфигурацию почты, а потом выполнить все указанные шаги.
Лично я сталкивался с ошибкой в Microsoft Exchange Server 2010, описанной тут, когда письму присваивается неверная кодировка:
Цитата:

Она возникает при совпадении четырех условий:

Версия Exchange Server 2010 SP1 RU3 или более поздняя.
К сообщению приложен файл.
Тема сообщения содержит русские кавычки — ёлочки ( « » ) .
Тело сообщения на русском языке в кодировке KOI8-R.
Вроде не похоже на проблему TS, но информация тоже может быть полезной.

Iska 19-05-2017 15:27 2738053

Цитата:

Цитата a_axe
но возможно это вариант, аналогичный описанному
Цитата:

Чтобы увидеть текст такого письма нужно сначала выбрать любую другую кодировку , а потом…
»

Вот, кстати, да — запросто может быть такое. Иногда даже в справке chm (которая также базируется на библиотеках IE) иногда случается похожее, а лечится, бывает, простым F5/Ctrl-F5 :).

obtim 19-05-2017 15:53 2738061

Я видел эти рекомендации. Они не помогли, поэтому и создал тему. Office 2010 ставился с 0-ля.

a_axe 19-05-2017 16:25 2738071

Цитата:

Цитата obtim
Office 2010 ставился с 0-ля. »

obtim, что будет, если создать на этом компьютере новую учетную запись Windows (после можно ее удалить) и запустить Outlook под этой чистой учетной записью?
Обновления Outlook (файл → справка → проверить наличие обновлений) все установлены?


Время: 05:52.

Время: 05:52.
© OSzone.net 2001-