共用方式為


Unicode 應用程式

您可以使用下列兩種方式之一,將應用程式重新編譯為 Unicode 應用程式:

  • 在應用程式的 Sqlucode.h 標頭檔中包含 Unicode #define

  • 使用編譯器的 Unicode 選項編譯應用程式。 (此選項會針對不同的編譯器而有所不同)。

若要將 ANSI 應用程式轉換成 Unicode 應用程式,請撰寫應用程式來儲存並傳遞 Unicode 資料。 此外,您必須轉換支援 SQLPOINTER 引數的函式呼叫,才能使用位元組計數。

將應用程式編譯為 Unicode 應用程式之後,如果應用程式呼叫 ODBC API 函式 (不含尾碼),則驅動程式管理員會將應用程式辨識為 Unicode 應用程式,並將函式呼叫轉換成 Unicode 函式 (尾碼為 W) (如果底層驅動程式支援 Unicode)。 當 ANSI 應用程式在不含尾碼的情況下呼叫函式時,如果底層驅動程式支援 ANSI,則驅動程式管理員會將其轉換成 ANSI。 如果應用程式與驅動程式都支援相同的字元編碼,驅動程式管理員會將呼叫傳遞至驅動程式 (ANSI 應用程式有一些例外)。

應用程式可以呼叫 Unicode 函式 (尾碼為 W) 和 ANSI 函式 (不論尾碼是否為 A)。 可以混用 Unicode 和 ANSI 函式呼叫。 不過,如果要使用資料指標程式庫,則無法混用 Unicode 和 ANSI 函式呼叫。 資料指標程式庫是 Unicode 或 ANSI,而不是混合。

您可以撰寫應用程式,使其能夠編譯為 Unicode 應用程式或 ANSI 應用程式。 在此情況下,字元資料類型可以宣告為 SQL_C_TCHAR。 這是巨集,如果應用程式編譯為 Unicode 應用程式,會插入 SQL_C_WCHAR,或者,如果編譯為 ANSI 應用程式,則會插入 SQL_C_CHAR。 應用程式程式設計師在使用採用 SQLPOINTER 作為其引數的函式時必須小心,因為長度引數的大小將會根據應用程式是 ANSI 還是 Unicode 而變更 (針對字串資料類型)。

您可以使用下列三種方式之一呼叫函式:當作僅限 Unicode 的函式呼叫 (尾碼為 W)、當作僅限 ANSI 的函式呼叫 (尾碼為 A),或當作不含尾碼的 ODBC 函式呼叫。 三種形式函式的引數完全相同。 只有具有 SQLCHAR * 引數或指向字串之 SQLPOINTER 引數的函式需要 Unicode 和 ANSI 形式。 針對具有可以當作字元類型宣告之引數的函式,例如 SQLBindColSQLGetData (沒有 Unicode 和 ANSI 形式),可以將引數宣告為 Unicode 類型、ANSI 類型,或 SQL_C_TCHAR 巨集 (若是 C 類型引數)。 如需詳細資訊,請參閱 Unicode 資料

即使沒有 Unicode 驅動程式可供使用,仍可將應用程式撰寫為 Unicode 應用程式。 驅動程式管理員會將 Unicode 函式和資料類型對應至 ANSI。 Unicode 對應到可以執行的 ANSI 時有一些限制。 如果有適用於 Unicode 應用程式的 Unicode 驅動程式,將會使效能更好,而且會移除 Unicode 與 ANSI 對應固有的限制。