啟用國際化
大部分的傳統 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 個字節,因此您應該一律同時操作這兩個字節。