- PR -

ASP.NET 引数の日本語が文字化けする

1
投稿者投稿内容
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2005-11-17 18:46
いつもお世話になっております。

ASP.NETにてメッセージ用の画面をポップアップで表示しております。
画面OPENの際に引数も指定できるようにしてあり、引数の値を画面に表示できるようにしています。
日本語を引数にセットすると文字化けが起きるので、web.comfigの「globalization」をshift-jisにしたところ解決できたのですが、別の問題があってutf-8に戻そうと思っています。
そこでJavaScriptで画面をモーダルでopenした時に引数に日本語を渡すと文字化けが起きる件の回避方法が解らず困っております。

流れとしては
@サーバーサイドでイベント処理

AエラーがあったらJavaScriptを生成しクライアントに送信(JavaScriptは外部ファイルです)

BJavaScriptのファイル内でshowModalDialog()を実行、urlの後ろに?source='引数'で日本語を渡す。

Copenしたフレーム形式の画面のHEADタグ内で
<% Dim strSource As String = Request.Params("source") %>
で引数を取得しフレームのソースの引数にセットしている
★★★デバックしてRequest.Params("source")の値を見ると、この時点で文字化けしています。
<frameset cols="*">
<frame name=contents
     src="form.aspx?source=<%=strSource%>">
<noframes>

※モーダルで表示したかったのでフレームを使用しています。

良い解決方法があれば、ご伝授願います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-17 18:53
引用:

黒獅子祭りさんの書き込み (2005-11-17 18:46) より:

日本語を引数にセットすると文字化けが起きるので、web.comfigの「globalization」をshift-jisにしたところ解決できたのですが、別の問題があってutf-8に戻そうと思っています。


どんな場合でもエンコードしてください。
ブラウザによっては URL を正しく解釈できません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2005-11-17 19:04
ご返答ありがとうございます。
引用:

どんな場合でもエンコードしてください。
ブラウザによっては URL を正しく解釈できません。



「どんな場合でもエンコードしてください。」とはどういう事ですか?
知識不足ですみません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-17 19:14
引用:

黒獅子祭りさんの書き込み (2005-11-17 19:04) より:

「どんな場合でもエンコードしてください。」とはどういう事ですか?
知識不足ですみません。


引数にセットする時はどんな場合でもという意味です。
ちょっと「どんな場合」は不適切な表現でしたね、すいません。(*_ _)

確かに、特にエンコードしなくとも大抵はブラウザで正しく解釈されます。
しかし、すべてのブラウザがそうなるわけではありません。
(たいてい、Shift_JIS は OK のようですが)

引数に渡す文字列はエンコードしておきましょう。
ということです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-11-17 19:15
以下をご参照下さい。

◆@IT
http://www.atmarkit.co.jp/fdotnet/dotnettips/212urlencode/urlencode.html

◆MSDN(ONLINE)
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwebhttputilityclassurlencodetopic2.asp

MSDNから引用

引用:

空白や区切り記号などの文字が HTTP ストリームで渡される場合、それらの文字は受信側で誤って解釈される可能性があります。URL エンコーディングは、URL では使用できない文字を等価の文字エンティティに変換します。URL デコーディングはエンコーディングの逆の変換を行います。たとえば、URL で送信されるテキスト ブロックに < および > という文字が埋め込まれている場合、それらの文字は %3c および %3d としてエンコードされます。


お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2005-11-17 19:26
大変恥ずかしい事に「エンコード」の意味を知りませんでした。
URLを参考させて頂き初めて知りました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)