@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Request.QueryStringでの文字化け

1
投稿者投稿内容
じぃ
常連さん
会議室デビュー日: 2005/09/12
投稿数: 23
投稿日時: 2005-11-15 19:01
Request.QueryStringの文字化けについて悩んでいます。
以前の会議室を参考にさせていただき、web.configの
responseEncodingをshift-jis等にかえてみたのですが、
うまくいきません。

実際のコードは次のようになっております。
どなたかご存じのかた、どこが悪い気づかれた方、
どうぞ宜しくお願い致します。

@webform1でボタン押下時に次のように指定しています。
string show ="12345678910";
string startupScript = "<script language='JavaScript'>"
+ "window.open('../../WebForm2.aspx?id=name&status="
+show+"','hogohoge','width=500,height=350');</script>";
RegisterStartupScript("startup", startupScript);

Awebform2では次のように獲得し、ラベルに表示しています。
SessionMes=Request.QueryString["status"];
this.Label1.Text = SessionMes;

そうすると、webform2のラベルには、次のように表示されます。
「E234567891」
初めの1がEになり、最後の0は消えます。

どうしてでしょうか?

ちなみに、web.configは規定値のutf-8でも、shift-jisでも
変わらずに同様の現象です。

どうぞ宜しくお願いします。


かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2005-11-15 19:48
化ける文字列を HtmlEncode したらどうなりますか?
string show = HttpUtility.UrlEncodeUnicode("12345678910");

じぃ
常連さん
会議室デビュー日: 2005/09/12
投稿数: 23
投稿日時: 2005-11-15 20:18
かるあさんありがとうございます。

HtmlEncodeを行ったらうまくいきました。
いろいろと調べていたのですが、ちょっとよく分からない部分が
あります。
.NET-C#のソースコードは基本的にunicodeという認識です。

今、web.configの responseEncodingでは、utf-8を指定しています。
受け取る側も、投げる側も。
受け取ったあとのurlには「12345678910」は正しく
入っているが、どうして文字が化けちゃうのでしょうか?

unicodeのソースコードを通っているからでしょうか?
どこか分かりやすく説明が載っているサイトがありましたら
教えて頂けるとうれしいです。




1

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