更新:2007 年 11 月
.NET Compact Framework 不同於完整的 .NET Framework 之處,在提供當地語系化或全球化應用程式的資源方面,有其空間上的限制。這些資源包含排序資料表、日期格式轉換子 (Converter)、字串比較子 (Comparer) 和其他全球化公用程式。
開發人員應該判斷裝置上的作業系統,是否能夠適當地呈現其應用程式。由於全球化的需求和功能之故,針對個人電腦上完整的 .NET Framework 所撰寫之應用程式,與針對裝置上 .NET Compact Framework 所撰寫的應用程式之間會有所不同。
如果您建立 CultureInfo 的執行個體,表示 .NET Compact Framework 或裝置作業系統不支援的文化特性 (Culture),則 .NET Compact Framework 會傳回 ArgumentException。
在盡可能的情況下,.NET Compact Framework 會使用原生作業系統呈現符合地區設定的內容,例如使用適當的字型。它也會依照裝置作業系統,進行文化特性上正確的字串比較和字元大小寫區分,例如當使用 Compare、ToUpper 和 ToLower 時。
目前文化特性的設定
您不能用程式設計的方式,在裝置上設定目前的文化特性。這些文化特性是透過裝置製造商或裝置使用者以手動進行設定,例如以使用執行 Windows CE 或 Windows CE .NET 之 Pocket PC 的 [地區設定] 而言,目前文化特性的設定是以個別裝置為基礎。
當應用程式啟動時,會使用裝置的地區設定。其值是由 CurrentCulture 和 CurrentUICulture 屬性反映。這些屬性在 .NET Compact Framework 中是唯讀的。
如果裝置作業系統支援多語系使用者介面 (MUI),則 .NET Compact Framework 提供個別的 UI 語言設定,並且在 CurrentUICulture 中反映設定值。如果裝置不支援 MUI,CurrentUICulture 預設為 CurrentCulture。
.NET Compact Framework 不支援 Thread 的 CurrentCulture 和 CurrentUICulture 屬性,因為文化特性設定是以個別裝置 (而不是個別的執行緒) 為基礎。
裝置的當地語系化設計考量
當進行智慧型裝置應用程式當地語系化時,應該考慮下列的支援和行為。
日曆
.NET Compact Framework 僅支援西曆架構 (Gregorian-Based) 的日曆,並以西曆日曆做為預設值。希伯來或 Hijri 日曆並不支援。
字串比較
在某些情況中,因為裝置作業系統的差異性,字串的比較可能會與完整的 .NET Framework 有所不同。如果傳送的字串包含壓縮字元,則 CompareInfo 物件的 IndexOf、LastIndexOf、IsPrefix 和 IsSuffix 可能會評估錯誤。
使用者覆寫
某些 .NET Compact Framework 從內部全球化資料表取得的預設值,與作業系統登錄設定所指定的預設值不同。例如,.NET Compact Framework 和完整的 .NET Framework 使用美式英文 (us-EN) 四位數年份,而 Windows CE .NET 則使用兩位數。.NET Compact Framework 預設值的順序優先於裝置作業系統之預設值。
應用程式在其初始化期間會取得覆寫值,因此會忽略該時間後任何值的變更。
編碼方式
.NET Compact Framework 支援所有裝置上的字元編碼:Unicode (BE 和 LE)、UTF8、UTF7 和 ASCII。
字碼頁編碼的支援是有限制的,並且僅發生在裝置的作業系統辨識出該編碼方式的情況下。
如果裝置上無法使用所需的編碼方式,.NET Compact Framework 就會擲回 PlatformNotSupportedException。
如果裝置上具備選擇性元件 Mlang.dll,則會支援下列字碼頁:CP 51932 (EUC-JP)、CP 50220 (ISO2022JP) 和 CP 50221 (cslSO2022JP)。
變更大小寫、Surrogate 字組
.NET Compact Framework 使用原生的 Windows CE 函式變更字元的大小寫,不像 .NET Framework 內建這項功能。
Windows CE 不支援變更 Surrogate 字組的大小寫,所以 .NET Compact Framework 不支援這項功能。
排序
.NET Compact Framework 使用原生 (Native) 的 Windows CE 函式執行排序作業,而不是 Managed 程式碼演算法。如果與該地區設定 (Locale) 的桌上型應用程式相比較,這種方式所產生的結果可能不同。