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

このQ&Aのポイント
  • ASP.NET3.5では標準で「ASP.NET AJAX」をサポートしており、Formタグ直下にScriptManagerコントロールを埋め込むことで利用できます。
  • Web.configのglobalizationで文字コードを指定する際、Shift-jisを指定するとASP.NET AJAXを利用する際にエラーが発生します。
  • 解決策としては、Webサイトの仕様上で可能であれば「UTF-8」を指定することが望ましいです。
回答を見る
  • ベストアンサー

「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"を指定したく思っています) ご教授の程、宜しくお願い致します。

noname#149114
noname#149114

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

  • ベストアンサー
回答No.1

asp.netとして最も現実的な対応方法は 「Ajaxを利用するページは、charaset=UTF-8を使用する」 です。 asp.netのajaxのスクリプトの通常の引き込み方法は、ご存知の通り記載を必要とせず、自動的にScirptタグがヘッダに追加されます。 そのタグのキャラセットを指定できないので、UTF-8に合わせるしかありません。 どうしてもというのであれば、 ・ScriptManagerを利用せず、手力でスクリプトタグを作成し、引き込みにUTF-8を設定してあげること ・非同期ポストを行うスクリプトも手書きで行い、キャラセットの指定を自力で行うこと という対応法がありますが、、、 こうなると.netの利点が全く生かされなくなるので、やはり現実的ではありません。 Ajaxを.netで利用する場合、全体構成は「utf-8」、「必要に応じてShift_jis」という作りになるようにしましょう。

noname#149114
質問者

お礼

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

関連するQ&A

  • ASP.NETで特定のページだけ文字コードを変更したい

    お世話になっております。 ASP.NET2.0でWebアプリケーションを開発しておりまして、現状すべてのページをShift-JISの文字コードで構築しています。 文字コードの指定はWeb.configのsystem.web.globalizationで指定しています。 標記の件ですが、特定のページだけUTF-8を利用したい場合、どのような手段が考えられますでしょうか? MSDNでは@Pageディレクティブにて指定できる旨が記載されているのですが、実際に指定してシステムを実行するとアプリケーションエラーが発生してしまいます。 http://msdn.microsoft.com/ja-jp/library/39d1w2xf(VS.80).aspx 特定のページのみASP.NET AJAXの利用を考えておりまして、その場合の非同期通信が文字コードUTF-8で通信されるために上記対応が必要と考えております。 ご教示のほど、どうぞよろしくお願いいたします。

  • Webの文字コードについて

    しばらくWeb制作から離れていまして、久しぶりなのですが、DreamweaverCS3のデフォルトの文字コードがUTF-8になっていました。 以前(MX2004の頃)はshift-jisだったと思います。 文字コードの知識もあまりなく、shift-jisにしておけば無難・・ということでそれに従っていただけなのですが、いまはUTF-8が普通なのでしょうか? UTF-8に変わった理由も知りたいです。

  • ASP.netでImageButtonのImageUrlの指定ができない

    VS2008 Web Developer Express EditionでWebアプリを作っています。 ImageButtonをFormに貼り付け、右下のプロパティPaneからImageUrlを指定しようとしても、該当するファイルが表示されません。 ちなみにそのimageファイルはaspxファイルがあるフォルダにimagesというフォルダを作り、さらにippanというフォルダにnippo.jpgというファイルを入れています。 (つまりimages/ippan/nippo.jpgです) プロパティPaneから指定できないので、ソースコードの画面から <asp:ImageButton ID="nippo" Imageurl="images/ippan/nippo.jpg" runat="server" /> と入力すると、デザイン画面にnippo.jpgが表示されました。 それはいいのですが、最下部のエラー一覧Paneに「警告」として、 「ファイル'images/ippan/nippo.jpg'が見つかりませんでした。」 と表示されます。 これはなぜでしょうか?何か設定が必要なのでしょうか? ちなみにVS環境には、ASP.NET AJAX Control Toolkitをインストールしています。

  • Webサイトの文字コードについて

    日本のWebサイトの文字コードはShift-JISが多いようですが、UTF-8との違いってなんなんでしょうか?表示できない文字があるんでしょうか? また、MovableTypeのテンプレートはデフォルトでUTF-8になっていますが、Shift-JISに変更すると何か不具合があるんでしょうか? 投稿するカテゴリが間違っていたらごめんなさい。

    • ベストアンサー
    • HTML
  • ASP.netのエラー 2005から2008への移行

    パーサー エラー メッセージ: 基本クラスに 'sman' という名前のフィールドが含まれていますが、その型 (System.Web.UI.ScriptManager) はコントロール (System.Web.UI.ScriptManager) の型と互換性がありません。 <asp:ScriptManager ID="sman" runat="server" > visualstudio2005から2008へ移行(ウィザードを使用)したのですが、実行すると上記のようなエラーが出てしまいます。visualstudio2005では問題なく動作しておりました。 その型System.Web.UI.ScriptManagerは コントロールのSystem.Web.UI.ScriptManagerと 互換性がないとのことですが、 同じ型なのに、どうしてこのようなエラーが出てしまうのでしょうか?

  • ASP.NETの文字コードごとのフォントスタイルについて

    以前Unicodeでエンコードして保存したファイルを 日本語Shift-JISでエンコードしなおして保存したところ、 フォントスタイルがかわってしまいました。 各文字コードごとにデフォルトのフォントスタイルが決まっているのでしょうか?もし決まっているならば教えてください。 また、Shift-JISで保存したファイルの文字をUnicodeで保存したときのファイルと同じフォントスタイルにする方法をご存知でしたら教えてください。 ASP.NET初心者なため、ご教授お願いいたします。

  • ASP.NETでTimerコントロールを使用したい

    ASP.NETWebアプリケーションについての質問です。 ajaxのTimerコントロールでイベントを発生させ、画面の再描画をしようとしています。 コードは以下のような感じで、OnPreRenderイベント内で描画処理を行います。 Partial Public Class _Default Inherits System.Web.UI.Page Private str As String = "" Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load str = CStr(Date.Now) End Sub Protected Overrides Sub OnPreRender( _ ByVal e As System.EventArgs _ ) Label1.Text = str End Sub End Class Timerコントロールを配置して実行したところ、 Script controls may not be registered before PreRender. というエラーが出てしまいます。 調べてみたのですが原因がわかりません。 何かプロパティの設定などが必要なのでしょうか? aspx のコードは以下のとおりです。 <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication5._Default" %> <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" ></asp:ScriptManager> <asp:Timer ID="Timer1"runat="server"></asp:Timer> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Labe> l </form> </body> </html> 回答よろしくお願いいたします。

    • ベストアンサー
    • AJAX
  • ASP.NETの新しいWEBサイトでAjaxテンプレートがでない

    ASP.NET初心者です。 本の通り操作し、VWD2008(VisualStudio2008無償版)を インストールしました。 もちろん、IISの設定もVWD2008をインストールする前にしました。 VWD2008をインストールすると、自動でAjax1.0がインストール されるらしいのですが、「新しいWEBサイト」のダイアログに Ajax関連のテンプレートが表示されません。 VWD2008を起動すると、ツールボックスにはAjaxの機能は追加 されているようです。 VWD2008をインストールした時に、Ajaxがうまくインストール できなかったのかもしれない???と思い、 ネットからAjax1.0をダウンロードし、インストールしましたが、 やはり「新しいWEBサイト」のダイアログにAjax関連のテンプレートは 表示されません。 何か設定方法があるのでしょうか? この作業ができないと、本の学習で前にすすめません・・・ 誰か、ご存知の方、助けて下さい!

  • Asp.netで開発しています。

    Asp.netで開発しています。 vs2005で作成したASPのモジュールをIISに移行したいのですがIIS上だとエラーがでます。 /////////////////////////////////////////////////////////////////// パーサー エラー 説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。 以下の解析エラーの詳細を確認し、ソースファイルに変更を加えてください。 パーサー エラー メッセージ: 型 'test._Default' を読み込めませんでした。 ソース エラー: 行 1: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="test._Default" %> ///////////////////////////////////////////////////////////////// 拡張子.aspは簡単なサンプルを起動できるのですが、.aspxだとどれもエラーがでます。 マッピングのための処理はしたのですが・・・解決をして下さい。お願いします。

  • 海外サーバ(ASP.NET利用)での文字化け

    海外のレンタルサーバ(英語)をレンタルしたのですが、ASP.NETを利用すると文字化けを起こしてしまって困っています。色々と試してみたのですが、どうしてもうまく行きません。ASPやHTMLでは文字化けしないのですがなぜかASP.NET(aspxファイル)を実行する時だけなのです。TRYした内容で、まともに表示された例を挙げます。 まず、aspxファイルに<%@ CodePage ="1252" %>を指定し、実行する。 次に表示された結果をブラウザ(IE)の「表示」→「エンコード」を「日本語(Shift JIS)」にすると、うまく表示されます。 ただ、これではクライアントにいちいちエンコードしてもらわないといけないので非現実的です。 コード内で、 Session.codepage = 932 等にも変換してみたのですが、うまくいきませんでした。 尚、<%@ CodePage ="***" %>の部分の殆どの日本語コードを試してみましたがこれも駄目でした。(↓試したコード) http://msdn2.microsoft.com/ja-jp/library/system.text.encoding.windowscodepage.aspx どなたか同じような症状を経験した方がいらっしゃれば、ご教授願えませんでしょうか? ちなみに、サーバは WIN2003 ASP2.0です。 よろしくお願いいたします。

専門家に質問してみよう