Compartilhar via


Aplicativos Unicode

Você pode recompilar um aplicativo como um aplicativo Unicode de duas maneiras:

  • Inclua o #define Unicode contido no arquivo de cabeçalho Sqlucode.h no aplicativo.

  • Compile o aplicativo com a opção Unicode do compilador. (Essa opção será diferente para compiladores diferentes.)

Para converter um aplicativo ANSI em um aplicativo Unicode, escreva o aplicativo para armazenar e passar dados Unicode. Além disso, as chamadas para funções que dão suporte a argumentos SQLPOINTER devem ser convertidas para usar contagem de bytes.

Depois que um aplicativo é compilado como um aplicativo Unicode, se o aplicativo chama uma função de API ODBC (sem um sufixo), o Gerenciador de Driver reconhece o aplicativo como um aplicativo Unicode e converte a chamada de função em uma função Unicode (com o sufixo W) se o driver subjacente der suporte a Unicode. Quando um aplicativo ANSI faz uma chamada de função sem um sufixo, o Gerenciador de Driver o converterá em ANSI se o driver subjacente der suporte a ANSI. Se o aplicativo e o driver derem suporte para a mesma codificação de caracteres, o gerenciador de driver passará as chamadas para o driver (com certas exceções para aplicativos ANSI).

Um aplicativo pode chamar funções Unicode (com o sufixo W) e funções ANSI (com ou sem o sufixo A). As chamadas de função Unicode e ANSI podem ser combinadas. Porém, se a biblioteca de cursores for usada, as chamadas de função Unicode e ANSI não poderão ser combinadas. A biblioteca de cursores é Unicode ou ANSI, não uma combinação.

Um aplicativo pode ser escrito de tal forma que possa ser compilado como um aplicativo Unicode ou um aplicativo ANSI. Nesse caso, os tipos de dados de caractere podem ser declarados como SQL_C_TCHAR. Essa é uma macro que insere SQL_C_WCHAR se o aplicativo é compilado como um aplicativo Unicode ou insere SQL_C_CHAR se ele é compilado como um aplicativo ANSI. O programador de aplicativo deve ter cuidado com funções que usam SQLPOINTER como argumento, pois o tamanho do argumento de comprimento será alterado (para tipos de dados de cadeia de caracteres) dependendo de se o aplicativo é ANSI ou Unicode.

Uma função pode ser chamada de três maneiras: como uma chamada de função somente Unicode (com o sufixo W), como uma chamada de função somente ANSI (com o sufixo A) ou como a chamada de função ODBC sem sufixo. Os argumentos para as três formas de uma função são iguais. Somente as funções com argumentos SQLCHAR * ou argumentos SQLPOINTER que apontam para cadeias de caracteres exigem formulários Unicode e ANSI. Para funções que têm argumentos que podem ser declarados como um tipo de caractere, como SQLBindCol ou SQLGetData (que não têm formulários Unicode e ANSI), o argumento pode ser declarado como o tipo Unicode, o tipo ANSI ou, no caso de um argumento de tipo C, a macro SQL_C_TCHAR. Para obter mais informações, confira Dados Unicode.

Um aplicativo poderá ser escrito como um aplicativo Unicode, mesmo que nenhum driver Unicode esteja disponível para ele trabalhar. O Gerenciador de Driver mapeará as funções Unicode e os tipos de dados para ANSI. Há algumas restrições para os mapeamentos Unicode para ANSI que podem ser executados. A existência de um driver Unicode para o aplicativo Unicode trabalhar levará a um melhor desempenho e removerá as restrições inerentes aos mapeamentos Unicode para ANSI.