ASP系列講座(二十二)使用國際站點
作者:Eve Cole
更新時間:2009-05-30 19:58:30
在Internet 或Intranet 上發佈訊息的一個優點是您可以建立一個使用者可以從不同國家(地區)存取的國際化Web 網站。使用者可以申請已被本地化為當地語言的網頁,使用瀏覽器的本地化版本閱讀。在建立一個包含多種語言網頁的Web 網站時,需要轉換在瀏覽器與Web 伺服器間或ASP 腳本與ActiveX 元件間傳遞的字串。例如,如果一個日文瀏覽器在HTTP 請求中發送了表格或查詢字串值,則此字串必須從瀏覽器的日文字集轉換為ASP 用於處理腳本的字元集。
如果Web 網站上的所有頁面都以Web 伺服器所使用的預設字元集書寫,那麼ASP 就會自動進行轉換。但是,如果網頁是用其他的字元集寫的,就必須用ASP 指令指明如何轉換字串。例如,如果您的網站既有日文字集的網頁,又有中文字元集的網頁,就必須指明ASP 處理某一特定頁時所用的字元集。
ASP 也提供了支援不同地區文化習慣的命令,例如貨幣、時間和日期格式。同字串轉換指令一樣,如果您的腳本沒有使用Web 伺服器的預設現場,則要使用現場命令。
設定字串轉換代碼頁代碼頁是一個內部表,作業系統用它將符號(字母、數字和標點符號)對應為字元編號。不同的代碼頁支援不同國家(地區)所使用的字元集。代碼頁以編號引用,例如,代碼頁932 代表日文字集,代碼頁950 代表繁體中文字元集。
Active Server Pages 和ActiveX 腳本引擎在內部使用Unicode,這是一種16 位元固定長度的字元編碼標準。如果您編寫的所有頁都使用Web 伺服器的預設程式碼頁,則ASP 將自動轉換字串。如果您的腳本不使用Web 伺服器的預設程式碼頁,則應該指明所使用的程式碼頁以便字串在ASP 和腳本引擎間傳遞時能被正確轉換。另外,您也可以為在瀏覽器與腳本間或ActiveX 元件與腳本間傳遞的字串指定程式碼頁。
若要為ASP 頁指定代碼頁,可使用CODEPAGE 指令。例如,設定日文代碼頁,可使用下列指令:
<%@ CODEPAGE= 932 %>
當ASP 處理這一頁的內容和腳本時,將使用您指定的代碼頁來決定如何將腳本中的字元從您的腳本的字元集轉換為Unicode。例如,在ANSI 中代表字母"a" 的值將轉換為在Unicode 中代表字母"a" 的不同的值。
Active Server Pages 假定在伺服器和瀏覽器間或腳本和ActiveX 元件間傳遞的字串的程式碼頁與您為腳本設定的程式碼頁是相同的。若要指定不同的代碼頁,可以設定Session.CodePage 屬性,從而覆寫CODEPAGE 設定。例如,您使用JIS 書寫腳本,但卻要回應使用UTF-8 的客戶程序,(JIS 和UTF-8 是標準日文字集的兩種不同的字元編碼)。
Session.CodePage 預設為CODEPAGE 指令的值;對該屬性的設定將覆寫目前的CODEPAGE 設定。例如,要將代碼頁改為繁體中文,可使用下列指令:
<% Session.CodePage = 950 %>
如果您只是暫時更改部分腳本的程式碼頁,在此之後一定要將Session.CodePage 設定為原來的值。以下腳本顯示如何臨時更改程式碼頁:
<!-- Welcome to my home page in Japanese, code page 932 --!>
<%@ CodePage = 932 %>
……
<% Session("OriginalCodePage") = Session.CodePage %>
<!-- Look up name in Chinese, code page 950 --!>
<% Session.CodePage = 950 %>
<% Sender = ReadMailHeader("Sender") %>
<% Found = FindFriend("Sender") %>
<!-- Restore the original code page --!>
<% Session.CodePage = Session("OriginalCodePage") %>
<% If Found == TRUE
ReplyWithPersonalizedForm()
else
ReplyWithBusinessForm()
%>
設定現場標識現場是與使用者語言相關的一組使用者首選項資訊。現場決定如何格式化日期和時間、項目;如何按字母排序以及如何比較字串。現場識別(LCID) 是唯一定義現場的32 位數值。如果您沒有為腳本指定不同的現場,那麼ASP 將使用Web 伺服器的預設現場。
若要為ASP 頁設定現場標識,可使用LCID 指令。例如,要設定日文現場,可使用下列現場ID:
<%@ LCID = 1041 %>
LCID 指令告訴ASP 書寫腳本所使用的現場。如果要變更腳本的輸入或輸出現場,可使用Session.LCID 屬性。例如,要將現場設定為標準法語,可使用以下命令:
<% Session.LCID = 1036 %>
Session.LCID 的預設為LCID 指令的設定。在腳本中設定Session.LCID 的值將覆蓋預設值。