共用方式為


啟用國際化

大部分的傳統 C 和 C++ 程式碼都會假設字元和字串操作不適用於國際應用程式。 雖然 MFC 和執行時間程式庫都支援 Unicode 或 MBCS,但仍有工作可供您執行。 為了引導您,本節說明 Visual C++ 中的「國際啟用」意義:

  • Unicode 和 MBCS 都是透過 MFC 函式參數清單和傳回型別中的可攜式資料類型來啟用。 這些類型會以適當的方式有條件地定義,視您的組建是否定義符號或符號 _UNICODE_MBCS (這表示 DBCS) 而定。 MFC 程式庫的不同變體會自動與您的應用程式連結,視組建所定義的這兩個符號中的哪一個而定。

  • 類別庫程式碼使用可攜式執行時間函式和其他方法來確保正確的 Unicode 或 MBCS 行為。

  • 您仍然必須在程式碼中處理特定種類的國際化工作:

    • 使用相同的可攜式執行時間函式,讓 MFC 在任一環境中可攜式。

    • 使用 _T 宏,讓任一環境中可移植的常值字串和字元。 如需詳細資訊,請參閱 tchar.h 中的泛型文字對應。

    • 在 MBCS 下剖析字串時採取預防措施。 Unicode 下不需要這些預防措施。 如需詳細資訊,請參閱 MBCS 程式設計提示

    • 請小心您是否在應用程式中混合 ANSI (8 位) 和 Unicode (16 位) 字元。 您可以在程式的某些部分使用 ANSI 字元,並在其他部分使用 Unicode 字元,但您無法在相同的字串中混合這些字元。

    • 不要在應用程式中硬式編碼字串。 相反地,將它們新增至應用程式的 .rc 檔案,使其成為 STRINGTABLE 資源。 然後,您的應用程式可以當地語系化,而不需要原始程式碼變更或重新編譯。 如需 STRINGTABLE 資源的詳細資訊,請參閱 字串編輯器

注意

歐洲和 MBCS 字元集有一些字元,例如強調字母,字元碼大於0x80。 由於大部分程式碼都使用帶正負號字元,因此當轉換成 int 時,這些大於0x80的字元會進行簽署擴充。 這是陣列索引編制的問題,因為符號擴充字元是陣列外部的負數。 使用 MBCS 的語言,例如日文,也是唯一的。 因為字元可能包含 1 或 2 個位元組,因此您應該一律同時操作這兩個位元組。

另請參閱

Unicode 和 MBCS
國際化策略