みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

「ASP.NET3.5+AJAX」とWebサイトで指定する文字コードに

「ASP.NET3.5+AJAX」とWebサイトで指定する文字コードに関して質問があります。

現在、VisualStudio2008(Professional)を使って、新規にWebサイトを開発をしています。
(使用している.NET Frameworkは3.5です)

ASP.NET3.5では「ASP.NET AJAX」を標準でサポートしているというので、
ためしにVS2008でWebプロジェクト作成時にデフォルトで用意されていたDefault.aspxに
下記のようにFormタグ直下にScriptManagerコントロールを埋め込んでみました。

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
・・・

ここでVS2008のデバッガでDefault.aspxのページを表示したところ、
問題なく背景色が白いページが表示されました。(ここまでは問題ありません)

次にWeb.configのglobalizationで、下記のように文字コードを"Shift-jis"にしまいた。

<globalization requestEncoding="Shift_JIS" responseEncoding="Shift_JIS" fileEncoding="Shift_JIS"/>

ここで先ほどと同様に、VS2008のデバッガDefault.aspxのページを表示したところ、
次のような内容のエラーダイアログが、2回立て続けに表示されました。

<エラー1つ目>
行:39
エラー:ASP.NET Ajaxクライアント側フレームワークを読み込ませんでした。

<エラー2つ目>
行:49
エラー:'Sys'は宣言されていません。

原因は、globalizationで文字コードをを変えた直後に発生したエラーなので、
ASP.NET AJAXを利用するには、UTF-8じゃないと問題ありということはわかったのですが・・・。

この問題を解決するには、globalizationに指定する文字コードを"UTF-8"にするしか
方法がないのでしょうか?(Webサイトの仕様上、なるべく"Shift-jis"を指定したく思っています)

ご教授の程、宜しくお願い致します。

投稿日時 - 2010-05-19 20:12:33

QNo.5906920

困ってます

質問者が選んだベストアンサー

asp.netとして最も現実的な対応方法は
「Ajaxを利用するページは、charaset=UTF-8を使用する」
です。

asp.netのajaxのスクリプトの通常の引き込み方法は、ご存知の通り記載を必要とせず、自動的にScirptタグがヘッダに追加されます。
そのタグのキャラセットを指定できないので、UTF-8に合わせるしかありません。


どうしてもというのであれば、
・ScriptManagerを利用せず、手力でスクリプトタグを作成し、引き込みにUTF-8を設定してあげること
・非同期ポストを行うスクリプトも手書きで行い、キャラセットの指定を自力で行うこと
という対応法がありますが、、、

こうなると.netの利点が全く生かされなくなるので、やはり現実的ではありません。

Ajaxを.netで利用する場合、全体構成は「utf-8」、「必要に応じてShift_jis」という作りになるようにしましょう。

投稿日時 - 2010-05-20 20:36:59

お礼

何となく予想はしていましたが、やっぱりUTF-8にするしか方法はなさそうですね。
ありがとうございました。

投稿日時 - 2010-05-26 19:07:40

ANo.1

このQ&Aは役に立ちましたか?

21人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問