現象
ASP.NET 1.1 を使用して作成した Web ページで、応答のエンコード形式を Shift-JIS に設定した際に、クライアント ブラウザ上に ¥ (円記号) で表示されていた箇所が、? (疑問符) で表示される場合があります。
たとえば、以下のプログラム コードを使用した場合に、この現象が確認されています。
ToString("C")
DataFormatString = "{0:C}"
この現象は、.NET Framework バージョン 1.1.4322.2300 以降のバージョンで発生します。.NET Framework バージョン 1.1.4322.2300 以降のバージョンは、Microsoft Windows Server 2003 Service Pack 1 (SP1) や 2005 年以降の Microsoft ASP.NET 1.1 に含まれています。
原因
.NET Framework バージョン 1.1.4322.2300 以降では新たに以下の設定値が導入されていますが、この値の既定値が False であるため、 ¥ (円記号) が最適にエンコーディングされない事により現象が発生します。
"System.Web.Configuration.GlobalizationSection.EnableBestFitResponseEncoding" プロパティ
.NET Framework のバージョンは、%WinDir%\Microsoft.NET\Framework\v1.1.4322\ フォルダ内の System.Web.dll ファイルのプロパティを開き、 [詳細] タブをクリックして表示される [製品バージョン] で確認できます。
解決方法
この現象を解決するには、以下のように、web.config ファイルの <globalization> 要素に、enableBestFitResponseEncoding 属性を追加し、値を true に設定してください。
<globalization
requestEncoding="shift-jis"
responseEncoding="shift-jis"
enableBestFitResponseEncoding="true"/>