海外サイトを利用したASP講義シリーズ(第22回)
著者:Eve Cole
更新時間:2009-05-30 19:58:30
インターネットまたはイントラネット上でメッセージを公開する利点の 1 つは、ユーザーがさまざまな国 (地域) からアクセスできる国際的な Web サイトを作成できることです。ユーザーは、現地の言語にローカライズされた Web ページを申請し、ローカライズされたバージョンのブラウザを使用してその Web ページを読むことができます。複数の言語の Web ページを含む Web サイトを構築する場合、ブラウザと Web サーバー間、または ASP スクリプトと ActiveX コンポーネント間で渡される文字列を変換する必要があります。たとえば、日本語ブラウザが HTTP リクエストでフォームまたはクエリ文字列値を送信する場合、この文字列はブラウザの日本語文字セットから、ASP がスクリプトの処理に使用する文字セットに変換する必要があります。
Web サイト上のすべてのページが Web サーバーで使用されるデフォルトの文字セットで記述されている場合、ASP は自動的に変換を実行します。ただし、Web ページが別の文字セットで記述されている場合は、ASP コマンドを使用して文字列の変換方法を指定する必要があります。たとえば、サイトに日本語の文字セット ページと中国語の文字セット ページの両方がある場合、ASP が特定のページを処理するときに使用する文字セットを指定する必要があります。
ASP は、通貨、時刻、日付の形式など、さまざまな地域の文化的慣習をサポートするコマンドも提供します。文字列変換コマンドと同様、スクリプトで Web サーバーのデフォルト ロケールを使用しない場合は、locale コマンドを使用します。
文字列変換コード ページの設定 コード ページは、オペレーティング システムが記号 (文字、数字、句読点) を文字番号にマップするために使用する内部テーブルです。異なるコード ページは、異なる国 (地域) で使用される文字セットをサポートします。コード ページは番号で参照されます。たとえば、コード ページ 932 は日本語の文字セットを表し、コード ページ 950 は繁体字中国語の文字セットを表します。
Active Server Pages と ActiveX スクリプト エンジンは、16 ビットの固定長文字エンコード標準である Unicode を内部で使用します。 Web サーバーのデフォルト コード ページを使用するすべてのページを作成すると、ASP によって文字列が自動的に変換されます。スクリプトで Web サーバーのデフォルトのコード ページを使用しない場合は、ASP とスクリプト エンジンの間で文字列が受け渡されるときに文字列が正しく変換されるように、使用されるコード ページを指定する必要があります。さらに、ブラウザとスクリプト間、または ActiveX コンポーネントとスクリプト間で渡される文字列のコード ページを指定できます。
ASP ページのコード ページを指定するには、CODEPAGE ディレクティブを使用します。たとえば、日本語のコード ページを設定するには、次のコマンドを使用します。
<%@ コードページ= 932 %>
ASP は、このページのコンテンツとスクリプトを処理するときに、指定されたコード ページを使用して、スクリプト内の文字をスクリプトの文字セットから Unicode に変換する方法を決定します。たとえば、ANSI の文字「a」を表す値は、Unicode の文字「a」を表す別の値に変換されます。
Active Server Pages は、サーバーとブラウザー間、またはスクリプトと ActiveX コンポーネント間で渡される文字列のコード ページが、スクリプトに設定したコード ページと同じであると想定します。別のコード ページを指定するには、Session.CodePage プロパティを設定して CODEPAGE 設定をオーバーライドします。たとえば、JIS を使用してスクリプトを作成し、UTF-8 を使用するクライアントに応答するとします (JIS と UTF-8 は、標準日本語文字セットの 2 つの異なる文字エンコーディングです)。
Session.CodePage は、デフォルトで CODEPAGE ディレクティブの値に設定されます。このプロパティを設定すると、現在の CODEPAGE 設定がオーバーライドされます。たとえば、コード ページを繁体字中国語に変更するには、次のコマンドを使用します。
<% Session.CodePage = 950 %>
スクリプトの一部のコード ページを一時的に変更するだけの場合は、後で必ず Session.CodePage を元の値に設定してください。次のスクリプトは、コード ページを一時的に変更する方法を示しています。
<!-- 日本語の私のホームページへようこそ、コード ページ 932 --!>
<%@ コードページ = 932 %>
...
<% Session("OriginalCodePage") = Session.CodePage %>
<!-- 中国語で名前を検索、コード ページ 950 --!>
<% Session.CodePage = 950 %>
<% 送信者 = ReadMailHeader("送信者") %>
<% 見つかりました = FindFriend("送信者") %>
<!-- 元のコード ページを復元します --!>
<% Session.CodePage = Session("OriginalCodePage") %>
<% 見つかった場合 == TRUE
ReplyWithPersonalizedForm()
それ以外
ReplyWithBusinessForm()
%>
サイト識別サイトの設定は、ユーザーの言語に関連する一連のユーザー設定情報です。日付と時刻、項目をアルファベット順に並べ替える方法、文字列を比較する方法をその場で決定します。サイト ID (LCID) は、サイトを一意に定義する 32 ビット値です。スクリプトに別のロケールを指定しない場合、ASP は Web サーバーのデフォルトのロケールを使用します。
ASP ページのコンテキスト ID を設定するには、LCID ディレクティブを使用します。たとえば、日本語サイトを設定するには、次のサイト ID を使用します。
<%@LCID = 1041 %>
LCID ディレクティブは、ASP にスクリプトを記述するロケールを指示します。スクリプトの入力コンテキストまたは出力コンテキストを変更する場合は、Session.LCID プロパティを使用します。たとえば、ロケールを標準フランス語に設定するには、次のコマンドを使用します。
<% セッション.LCID = 1036 %>
Session.LCID のデフォルト設定は、LCID ディレクティブの設定です。スクリプトで Session.LCID の値を設定すると、デフォルト設定がオーバーライドされます。