月份: 三月 2009

從 ANSI 到 OEM 的字元轉換

        包含延伸字元,也就是在 ASCII 字元範圍 32 (space) 到 126 (~) 之外的字元,包括國際字元如 "a,"、"c"、"e"、"n" 和 "s" ,在 SQL Server 中需要特別處理。

在結果集合中的延伸字元表示倚賴使用中的字碼頁。字碼頁是電腦用來解譯及顯示資料屬性的字元集合。字碼頁通常對應到不同的平台及語言,並且被使用在國際化應用程式。例如,ASCII 值 174 會在一個字碼頁以 R 符號出現,而不是在另一個字碼頁以 chevron c 字元出現。

一般來說,字碼頁被分成 ANSI 字碼頁及 OEM 字碼頁。用高數字的 ASCII 值表示國際字元的 ANSI 字碼頁被使用在 Windows。用高數字的 ASCII 值表示畫直線及標點符號字元的 OEM 字碼頁被設計成在 MS-DOS 中使用。

當資料輸入 SQL Server 資料庫時,在本機 (用戶端) 電腦上的 SQL Server 設定指定資料是以 ANSI 或是 OEM 格式儲存。這選項是以在 [SQL Server 用戶端組態] 對話方塊內的 [DB 程式庫選項] 上的 [ANSI 到 OEM 自動轉換] 選項來指定。按一下 [開始] 功能表的 [程式集] 中的 Microsoft SQL Server 7.0 或更新的 [用戶端網路公用程式] 可取得此對話方塊。(關於 ANSI 到 OEM 自動轉換的更詳細資訊,請參考 SQL Server 文件。)

此選項預設是為 SQL Server 用戶端選取的,是能夠造成資料從高數字 ASCII 字元轉換到 OEM 字元的選擇。例如,如果 OEM 轉換選項被設定並且您在資料行中輸入 "Gunther" 名稱,然後儲存資料列,則字元 "u" 會在列存入資料庫之前轉換成另一字元。

您在「查詢設計工具」中所建立的查詢結果受 [SQL Server 用戶端組態] 對話方塊內的 OEM 轉換選項設定組合的延伸字元儲存格式所影響。其根據下列這些變數:

  • 您不能搜尋包含高順位的 ASCII 字元。
  • 您的查詢結果對高順位的 ASCII 字元以不正確字元出現。

一般來說,如果資料以 OEM 格式儲存,您應該設定 OEM 轉換選項,以使資料適當地顯示並且使您能夠搜尋它。如果資料是以 ANSI 格式儲存 (也就是說,它不會被轉換至 OEM 格式),但您已經設定 OEM 轉換選項,則資料將不會被適當地顯示並且您不能夠搜尋它。

若要決定資料是否以 OEM 格式儲存,您可以使用查詢來顯示資料表的內容或您工作的資料表。如果延伸字元不正確地出現,則 OEM 轉換設定可能會錯誤。關閉查詢與 Access 專案,更改在 [SQL Server 用戶端組態] 對話方塊的設定,然後再次開啟 Access 專案與查詢。