文字列変換のコード ページを設定する
"コード ページ" は、記号 (文字、数字、区切り文字) を文字番号にマップするために、オペレーティング システムが使用する内部テーブルです。 異なるコード ページは、異なる国で使用される文字セットをサポートしています。コード ページは番号で表され、たとえば、コード ページ 932 は日本語の文字セットを表します。また、中国語の文字セットの 1 つは 950 というコード ページで表されます。
Active Server Pages (ASP) と、ASP によってサポートされるスクリプト エンジンでは、内部的に Unicode が使用されます。Unicode は 16 ビット固定幅文字エンコード標準です。すべてのページを Web サーバーの既定のコード ページで記述すると、ASP により、自動的に文字列に変換されます。ただし、スクリプトが Web サーバーの既定のコード ページで作成されていない場合は、次の 2 つの間でデータを受け渡すときに、文字列が正しく変換されるようにコード ページを指定する必要があります。
- ASP とスクリプトの間
- ブラウザとスクリプトの間
- COM コンポーネントとスクリプトの間
ASP ページのコード ページを指定するには、@ CODEPAGE ディレクティブを使用します。たとえば、日本語コード ページを設定するには、次のディレクティブを使用します。
<%@ CODEPAGE = 932 %>
このページにあるコンテンツとスクリプトが処理されると、ASP により、指定されたコード ページを使用して、スクリプトの文字セットが Unicode に変換されます。たとえば、ANSI で文字 "a" を表す値は、Unicode で文字 "a" を表す値に変換されます。
ASP では、Web サーバーとブラウザ、またはスクリプトと COM コンポーネントの間を受け渡しされる文字列は、スクリプトで設定されているものと同じコード ページで記述されていると見なされます。異なるコード ページを指定する必要がある場合は、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()
%>