MSG格式的official documentation状态
指示.msg文件中的字符串属性是否为Unicode编码。 STORE_UNICODE_OK设置字符串属性是否为Unicode编码。
指定用于对该Message对象上的非Unicode字符串属性进行编码的代码页
表示用于PidTagBody属性或PidTagBodyHtml属性的代码页
基于上述情况,我的理解是,如果设置了Unicode掩码,则所有String属性均为unicode encoded,即UTF-16LE 如果未设置掩码,则使用PidTagMessageCodepage解码消息中的所有String属性。 基于the documentation,非unicode和unicode属性不能同时存在。
那么,PidTagInternetCodepage的目的是什么?它用于解码类型为ptystring的body或bodyhtml。
如果邮件具有unicode存储掩码,则
Q1。是否使用unicode或PidTagInternetCodepage解码PidTagBody / PidTagBodyHtml?
如果消息是非unicode,则
Q2。我们是否使用PidTagMessageCodepage或PidTagInternetCodepage解码PidTagBody / PidTagBodyHtml?
Q3。当设置了storemask时我们是否使用unicode,并且当不首先尝试使用PidTagBody / PidTagBodyHtmlit的PidTagInternetCodepage然后PidTagMessageCodepage时使用unicode吗?
Q4。如果不存在该怎么办..默认为1252?
答案 0 :(得分:1)
PR_BODY与任何其他字符串属性(例如PR_SUBJECT)没有什么不同-它具有PT_STRING8和PT_UNICODE两种风格。
另一方面,PR_HTML是PT_BINARY,它将数据存储在二进制字节blob中。大多数HTML正文都将字符集作为HTML头的一部分包含在内,但是,如果不存在,则需要使用PR_INTERNET_CODEPAGE。