关于PidTagInternetCodePage,PidTagMessageCodepage,PidTagStoreSupportMask

时间:2018-10-25 22:30:19

标签: outlook mapi msg

MSG格式的official documentation状态

  1. PidTagStoreSupportMask
  

指示.msg文件中的字符串属性是否为Unicode编码。 STORE_UNICODE_OK设置字符串属性是否为Unicode编码。

  1. PidTagMessageCodepage
  

指定用于对该Message对象上的非Unicode字符串属性进行编码的代码页

  1. PidTagInternetCodepage
  

表示用于PidTagBody属性或PidTagBodyHtml属性的代码页

基于上述情况,我的理解是,如果设置了Unicode掩码,则所有String属性均为unicode encoded,即UTF-16LE 如果未设置掩码,则使用PidTagMessageCodepage解码消息中的所有String属性。 基于the documentation,非unicode和unicode属性不能同时存在。

那么,PidTagInternetCodepage的目的是什么?它用于解码类型为ptystring的bodybodyhtml

如果邮件具有unicode存储掩码,则

Q1。是否使用unicode或PidTagInternetCodepage解码PidTagBody / PidTagBodyHtml?

如果消息是非unicode,则

Q2。我们是否使用PidTagMessageCodepage或PidTagInternetCodepage解码PidTagBody / PidTagBodyHtml?

Q3。当设置了storemask时我们是否使用unicode,并且当不首先尝试使用PidTagBody / PidTagBodyHtmlit的PidTagInternetCodepage然后PidTagMessageCodepage时使用unicode吗?

Q4。如果不存在该怎么办..默认为1252?

1 个答案:

答案 0 :(得分:1)

PR_BODY与任何其他字符串属性(例如PR_SUBJECT)没有什么不同-它具有PT_STRING8和PT_UNICODE两种风格。

另一方面,PR_HTML是PT_BINARY,它将数据存储在二进制字节blob中。大多数HTML正文都将字符集作为HTML头的一部分包含在内,但是,如果不存在,则需要使用PR_INTERNET_CODEPAGE。