Разъяснение MSG на PidTagInternetCodePage, PidTagMessageCodepage, PidTagStoreSupportMask

Официальная документация для государств формата MSG

  1. PidTagStoreSupportMask

указывает, имеют ли строковые свойства в файле.msg кодировку Unicode или нет. STORE_UNICODE_OK Устанавливается, если строковые свойства имеют кодировку Unicode.

  1. PidTagMessageCodepage

указывает кодовую страницу, используемую для кодирования строковых свойств, отличных от Юникода, в этом объекте сообщения

  1. PidTagInternetCodepage

указывает кодовую страницу, используемую для свойства PidTagBody или свойства PidTagBodyHtml

Исходя из вышеизложенного, я понимаю, что если маска Юникода установлена, то все свойства String кодируются в Юникоде, т.е. UTF-16LE. Если маска не установлена, то PidTagMessageCodepage используется для декодирования всех свойств String в сообщении. Основываясь на документации, свойства unicode и unicode не могут существовать вместе.

Итак, какова цель страницы PidTagInternetCodepage? Он используется для декодирования тела или bodyhtml, которые имеют типы ptystring.

Если сообщение имеет маску хранилища Unicode, то

Q1. Декодируем ли мы PidTagBody/PidTagBodyHtml, используя Unicode или PidTagInternetCodepage?

Если сообщение не является Unicode, то

Q2. Декодируем ли мы PidTagBody/PidTagBodyHtml, используя PidTagMessageCodepage или PidTagInternetCodepage?

Q3. Используем ли мы юникод, когда установлена ​​маска магазина, и когда это не первая попытка PidTagInternetCodepage, а затем PidTagMessageCodepage для PidTagBody/PidTagBodyHtmlit?

Q4. Что нам делать, если их нет... по умолчанию 1252?

1 ответ

Решение

PR_BODY ничем не отличается от любого другого строкового свойства (например, PR_SUBJECT) - оно доступно как в разновидностях PT_STRING8, так и в PT_UNICODE.

PR_HTML, с другой стороны, является PT_BINARY и хранит данные в двоичном байтовом объекте. Большинство тел HTML включает кодировку как часть заголовков HTML, но если ее нет, вам нужно будет использовать PR_INTERNET_CODEPAGE.

Другие вопросы по тегам