IISがASPエンコーディングを処理する方法を理解する
Classic ASPのすべてのエンコーディングの問題と同様に、さまざまなコマンドがどのような目的を果たしているかを理解するのに役立ちます(問題を解決しているように見えるため、誤って使用することがよくあります) 。
<%@ Language = "VBScript" CodePage = 65001 %>
この行は一般的に誤解されています。構文は<%@
は
-
@Language
ASPページの処理に使用する登録済みのアクティブスクリプト言語をIISに通知します。 -
@CodePage
ASPページを処理するために使用するCodePageをIISに指示します。ページがUTF-8
を使用して保存されている場合 次に、IISは、ページを処理するときにCodePage65001
を使用する必要があることを知る必要があります。 (別名UTF-8
) 。
これは、@CodePage
を意味します ページの作成時に使用された物理エンコーディングと常に一致する必要があります。これを解決するには、高度なテキストエディタを使用する必要がある場合があります。例としては、 Notepad++
があります。 (GUIウィンドウの右下のステータスバーにエンコーディングを表示します) およびAdvanced Save Options
と呼ばれる非表示のメニューコマンドがあります メニューバーをカスタマイズしてアクセスできます) 。
<% Response.CodePage = 65001 %>
よく誤解されることもありますが、このコマンドの目的は、動的文字列をエンコードする方法をIISに指示することです(動的文字列とは、Response.Write()
を使用して出力されるものを意味します。 ) 。正しく設定されていない場合、またはエンコーディングの不一致が発生すると想定される場合、プロセス全体の中でおそらく最も重要な部分が発生する可能性があります。
<% Response.CharSet = "UTF-8" %>
このコマンドは、;charset=utf-8
を設定します Content-Type
内 応答がサーバーからクライアントブラウザに送信されるときのHTTPヘッダーは、この応答をUTF-8
として処理する必要があることをブラウザに通知します。 デフォルトではなく。
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
不要であるため、使用しないでください。 Content-Type
のコマンドもあることにも注意してください。 HTTPヘッダーも
Response.ContentType = "text/html"
以前よりもさらに冗長になります。