お世話になっております。
ASP.NET2.0でWebアプリケーションを開発しておりまして、現状すべてのページをShift-JISの文字コードで構築しています。
文字コードの指定はWeb.configのsystem.web.globalizationで指定しています。
標記の件ですが、特定のページだけUTF-8を利用したい場合、どのような手段が考えられますでしょうか?
MSDNでは@Pageディレクティブにて指定できる旨が記載されているのですが、実際に指定してシステムを実行するとアプリケーションエラーが発生してしまいます。
http://msdn.microsoft.com/ja-jp/library/39d1w2xf …
特定のページのみASP.NET AJAXの利用を考えておりまして、その場合の非同期通信が文字コードUTF-8で通信されるために上記対応が必要と考えております。
ご教示のほど、どうぞよろしくお願いいたします。
No.7ベストアンサー
- 回答日時:
最後にこの件のまとめとして、私の知人が、わかりやすくBlogにまとめてくれましたので、お知らせします。
http://kame-taro.spaces.live.com/Blog/cns!CD8062 …
恐らく、Web.config で location Pathを指定する方法と、私が教授した、Global.asax を活用する方法、何が違うのかがわかると思います。
結論はどちらでも、できる!になりますが、どれほど細かいエンコード制御を行うのか、質問からでは計りかねるため、後はご判断にお任せします。
それでは、この件、ご納得頂けるようであれば、質問を締めて頂きたいと思います。宜しくお願いします。
No.8
- 回答日時:
すいません、URLがおかしかったので、もう一度、お知らせします。
本件を纏めてくれた知人のBlog
http://kame-taro.spaces.live.com/blog/cns!CD8062 …
宜しくお願いします。
参考URL:http://kame-taro.spaces.live.com/blog/cns!CD8062 …
kero_mioさん、この度は大変お世話になりました。
kame-taroさんのBlogも拝見させて頂き、よく理解することができたと思います。
質問内容につきましてはkero_mioさんのご指摘を真摯に受け止め、今後に活かしたいと考えております。
No.6
- 回答日時:
>今回は元々、ページ単位でRequestエンコードを指定する手段を質問していたかと思います。
質問された内容は、どうみても、そのように読み取れないですよね?質問の内容をもう一度、読み返してみて下さい。
「エラーになってしまいます。ご教示お願いします」だけでは、誤解を招きます。
他にRequestエンコードを指定する方法はありませんか?と聞いて頂ければ、済んだ話だったのではないかと思います。
このOKWave系列のコミュニティのみならず、
是非、今後のために、活かして頂けると幸いです。
No.5
- 回答日時:
>web.configにloactionを使用してrequestEncodingを指定する方法があるかと考えたのですが、この理解に間違いないでしょうか?
web.config にlocation を設定することでPage単位のエンコードを指定することはできます。どちらでも一緒です。
しかし、今回の質問の趣旨は、あくまでPageディレクティブでPage単位でRequestエンコードを指定でいないのか?(エラーになってしまうから)という質問であり、「他にやり方はないですか?」という聞き方ではなかったですよね?
そういう質問であれば、他に指定する方法ないですか?
と質問して頂きたかったです。(そうすれば、location指定したやり方、私も知ってましたので、そのように回答していたかと)
以上、宜しくお願いします。
この回答への補足
ご回答有難うございます。
今回は元々、ページ単位でRequestエンコードを指定する手段を質問していたかと思います。
質問内容にMSDNの件を含めておりましたので、誤解を招いてしまったのであれば、お詫び申し上げます。
No.4
- 回答日時:
再修正した中でも誤字脱字がありましたことお詫びします。
縁コーディング × -> エンコーディング ○
特定のPageのRequestエンコードをUTF-8になるように処理するには、どうすれば良いか? × ⇒
「特定のPageのRequest(受信)エンコードをUTF-8で処理するには、どうすれば良いか?」
大変失礼いたしました。
No.3
- 回答日時:
すいません、Shift_JIS と UTF-8 が逆でした。
(実際は、特定のPageのだけ、UTF-8で処理したいんですよね)
日本語も変だったので、もう一度、キレイにまとめて、回答致します。
すいませんでした。
・MSDN(http://msdn.microsoft.com/ja-jp/library/39d1w2xf …に掲載されていた「@Pageディレクティブ」の「requestEncoding」の使い方ですが、Pageは、そもそも応答を返す時どうするか?を設定するものなので、設定はできません。
(MSDNに掲載されている内容が間違っています)
ただし、@PageディレクティブにPage応答用のエンコードを指定する「responseEncoding」プロパティにUTF-8を設定したり、「CodePage」に65001(UTF-8)を設定することはできます。
(応答用のエンコードは@Pageディレクティブで指定できるが、
受信用のエンコードは@Pageディレクティブで指定できない)
・さて問題は、Request時に任意のエンコードで処理するには?
になりますが、@Pageディレクティブには
requestEncodingプロパティがない上に、Web.configや
machine.config ではなく、特定のPageのRequestエンコードを
UTF-8になるように処理するには、どうすれば良いか?という点です。
やるとしたら、Global.asaxファイルを作成し、
そこに、Application_BeginRequestイベントを使って、
特定のPageだけRequestエンコードを変更する処理を
入れてやるしか方法がありません。
VBなのかC#なのかわかりませんが、とりあえず両方サンプルを掲載しておきます。
C#の場合(Global.asax)
-----------------------------
<%@ Application Language="C#" %>
<script runat="server">
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.Path == "/hoge/Specialed.aspx")
{
Request.ContentEncoding = Encoding.GetEncoding("UTF-8");
}
else
{
// Web.Config か machine.config の
// globalizationを使用するので何も記述しない
}
}
</script>
VBの場合(Global.asax)
-----------------------------
<%@ Application Language="VB" %>
<script runat="server">
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
If Request.Path = "/hoge/Specialed.aspx" Then
Request.ContentEncoding = Encoding.GetEncoding("UTF-8")
Else
' Web.Config か machine.config の
' globalizationを使用するので何も記述しない
End If
End Sub
</script>
以上です。
まとめると、
・Response(応答)の縁コーディングは、@Pageディレクティブで指定できる
・Request(受信)のエンコーディングは、Page単位でできるプロパティがないので、Global.asaxのBeginRequestイベントで特定PageのURLを判別し、Request.ContentEncodingを活用して、UTF-8に変換する
というのが回答です。
それから、MSDNが間違った情報をUPしている件については、私の方から、マイクロソフトに対し、間違いを指摘しておきましたので
合わせてご連絡申し上げます。
http://forums.microsoft.com/MSDN-JA/ShowPost.asp …
以上、よろしくお願いします。
kero_mioさん、ご回答頂きありがとうございました。
また、お礼が遅くなってしまいましたことをお詫び申し上げます。
上記の件、理解できました。また、Microsoftへのご報告までして頂きまして大変感謝しております。
kero_mioさんにご回答頂きました方法とは別に、web.configにloactionを使用してrequestEncodingを指定する方法があるかと考えたのですが、この理解に間違いないでしょうか?
<system.web>
<globalization requestEncoding="Shift-JIS" responseEncoding="Shift-JIS" />
・・・・・
</system.web>
<location path="sample01.aspx">
<system.web>
<globalization requestEncoding="UTF-8" responseEncoding="Shift-JIS" />
</system.web>
</location>
No.2
- 回答日時:
状況はわかりました。
まとめると、
・MSDN(http://msdn.microsoft.com/ja-jp/library/39d1w2xf …に掲載されていた「@Pageディレクティブ」の「requestEncoding」の使い方ですが、Pageは、そもそも応答を返す時どうするか?を設定するものなので、設定はできません。
(MSDNに掲載されている内容が間違っています)
ただし、@PageディレクティブにPage応答用のエンコード「responseEncoding」にShift_JISを設定したり、「CodePage」に932(Shift JIS)を設定することはできます。
・さて問題は、Request時に任意のエンコードで処理するには?
になりますが、@Pageディレクティブがない上に、Web.configや
machine.config ではなく、特定のPageのみエンコードがSHIFT-JIS
になるように処理する方法は悩みますよね。
やるとしたら、Global.asaxファイルを作成し、そこに、Application_BeginRequestイベントを使って、特定のPageだけエンコードを変更する処理を入れてやるしか方法がありません。
VBなのかC#なのかわかりませんが、とりあえず両方サンプルを掲載しておきます。
C#の場合(Global.asax)
<%@ Application Language="C#" %>
<script runat="server">
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.Path == "/hoge/Specialed.aspx")
{
Request.ContentEncoding = Encoding.GetEncoding("Shift_JIS");
}
else
{
// Web.Config か machine.config の
// globalizationを使用するので何も記述しない
}
}
</script>
VBの場合(Global.asax)
<%@ Application Language="VB" %>
<script runat="server">
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
If Request.Path = "/hoge/Specialed.aspx" Then
Request.ContentEncoding = Encoding.GetEncoding("Shift_JIS")
Else
' Web.Config か machine.config の
' globalizationを使用するので何も記述しない
End If
End Sub
</script>
以上です。
まとめると、
・ResponseのPage単位でのエンコーディングは、@Pageディレクティブ
でできる
・Requestのエンコーディングは、Page単位でできるプロパティがないので、Global.asaxを活用する
というのが回答です。
それから、MSDNが間違った情報をUPしている件については、私の方から、マイクロソフトの間違いを指摘しておきたいと思います。
以上、よろしくお願いします。
No.1
- 回答日時:
エラーは、どこで発生してますか?Ajax側ですか?ASP.NET側ですか?
また、具体的に、Web.Configファイルで設定した、globalizationの内容はどのような内容でしょうか?ソース添付して頂けますか?
まずそこからお話したいです。よろしくお願いします。
#確かにASP.NETは標準がUTF-8 ではなく、Unicodeなので、
Ajaxで弊害が起こる可能性はあるなぁとは感じてます。
この回答への補足
kero_mioさん、ご回答頂きましてありがとうございます。
エラーはASP.NET側で発生します。
そもそも@PageディレクティブにrequestEncodingを指定する際に入力補完が全く機能せず、実行すると該当するプロパティが存在しないということでエラーになります。
globalizationにつきましては下記のように設定しています。
<globalization requestEncoding="Shift-JIS" responseEncoding="Shift-JIS" />
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- JavaScript ブックマークレットについて 2 2022/10/09 11:48
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Windows 8 メモ帳による文字コード変換 2 2022/09/01 18:38
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
シグナル 6(SIGABRT)とは?
-
IF文に時間(何時から何時ま...
-
vbaのエラー対応(実行時エラー...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
VBA For Each 〜 複数条件について
-
ProgressBarを用いる場合、全体...
-
VBAでBook読み込み時の非表示方...
-
Excelプロセスが消えない
-
特定のファイルを他のプロセス...
-
エクセルVBAでロックをかけたい
-
VBAの進捗状況をリアルタイ...
-
vbaレポート名の指定が間違って...
-
ExcelのVBAで、選択したファイ...
-
どう増強すべきか
-
C# 指定時間(秒間)の間処理を...
-
ASP(VBScript)でDBのテキス...
-
順番に処理させたい
-
Form オブジェクトの戻り値の設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
private subモジュールを他のモ...
-
vbaのエラー対応(実行時エラー...
-
マクロで、次のコードへ行く前...
-
どう増強すべきか
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
Excel VBA セルの名前があるか...
-
ExcelのVBAで、選択したファイ...
-
どうやってもFor文を抜けてしま...
-
シェルスクリプトでファイル内...
-
ドリブン??
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
【VBA】エラー処理で別プロシー...
-
Functionで戻り値を複数返す方法
-
Word VBA。各マクロの間に待ち...
-
エクセル VBAで複数セル選択時...
-
VBA 複数の行を高速で削除する...
おすすめ情報