Conjuntos de caracteres MAPI
Aplica-se a: Outlook 2013 | Outlook 2016
Aplicativos e provedores de serviços compatíveis com MAPI podem usar caracteres ANSI (byte único) ou caracteres Unicode (byte duplo). Não há suporte para conjuntos de caracteres OEM. Uma cadeia de caracteres OEM passada para um método ou função MAPI fará com que esse método ou função falhe. Os aplicativos cliente que funcionam com nomes de arquivo no conjunto de caracteres OEM devem ter cuidado para convertê-los em ANSI antes de passá-los para um método ou função MAPI.
O suporte ao conjunto de caracteres Unicode é opcional, tanto para clientes quanto para provedores de serviços. Todos os provedores de serviços devem escrever seu código para que possam compilar independentemente de dar suporte ou não ao Unicode. Os clientes compilam condicionalmente, dependendo do nível de suporte, mas os provedores de serviços não. Eles não devem ser recompilados quando o conjunto de caracteres for alterado. Nada no código do provedor de serviços deve ser condicional.
Quando clientes ou provedores de serviço que dão suporte ao Unicode fazem uma chamada de método que inclui cadeias de caracteres como parâmetros de entrada ou saída, eles definem o sinalizador MAPI_UNICODE. Definir esse sinalizador indica para a implementação que todas as cadeias de caracteres de entrada são cadeias de caracteres Unicode. Na saída, definir essas solicitações de sinalizador que todas as cadeias de caracteres passadas da implementação devem ser cadeias de caracteres Unicode, se possível. Os implementadores de método que dão suporte ao Unicode atenderão à solicitação; Os implementadores de método que não fornecem suporte unicode não cumprirão. As propriedades de cadeia de caracteres que não estão no formato Unicode são do tipo PT_STRING8.
MAPI define a constante fMapiUnicode no arquivo de cabeçalho MAPIDEFS. H para representar o conjunto de caracteres padrão. Se um cliente ou provedor de serviços dá suporte ao Unicode, fMapiUnicode será definido como MAPI_UNICODE. Clientes e provedores de serviços que não dão suporte ao Unicode definem fMapiUnicode como zero.
Os provedores de serviço que não dão suporte ao Unicode devem:
Recuse-se a executar conversões entre conjuntos de caracteres.
Nunca passe o sinalizador de MAPI_UNICODE em chamadas de método.
Retorne MAPI_E_BAD_CHARWIDTH quando o sinalizador de MAPI_UNICODE for passado.
Declare as propriedades da cadeia de caracteres ANSI explicitamente.
Os provedores de serviços também podem retornar MAPI_E_BAD_CHARWIDTH quando dão suporte apenas ao Unicode e os clientes não passam o sinalizador de MAPI_UNICODE.
A versão atual do MAPI dá suporte ao Unicode nos seguintes métodos:
IMAPIProp::GetLastError (somente implementação do IAddrBook )
Para esses métodos, os chamadores podem esperar que todas as cadeias de caracteres retornadas sejam cadeias de caracteres Unicode. Cadeias de caracteres retornadas de implementações MAPI de qualquer outro método serão cadeias de caracteres ANSI.