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

[C#] POSTデータの取得

1
投稿者投稿内容
どか
会議室デビュー日: 2004/07/17
投稿数: 14
投稿日時: 2004-08-17 16:06
いつもお世話になっております。
.NET(C#)でWebアプリケーションを作成しています。

POSTされた情報から
以下のように値を取得しようとすると
値が日本語の場合、文字化けしてしまいます。

string value = Request.Form.Get("KEY_");

URIデコードする必要があると思われるのですが。。
方法がわかりません。ご教授願います。

取得したPOSTデータをすべてでコードは以下の方法で出来るのですが、、
StreamReader reader = new StreamReader(Request.InputStream);
string postData = HttpUtility.UrlDecode(reader.ReadToEnd(),Encoding.GetEncoding("SHIFT_JIS"));
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-18 09:02
 送り側がEUC-JPやUTF-8で送っているのを、Shift-JISでデコードしているから、なんてことはないですか?


 あと、"Shift_JIS"(アンダーバー)ではなく、"Shift-JIS"(ハイフン)です。

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-08-18 09:03 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-08-18 09:16
引用:

Jittaさんの書き込み (2004-08-18 09:02) より:
 あと、"Shift_JIS"(アンダーバー)ではなく、"Shift-JIS"(ハイフン)です。


アンダーバーの方が正しくなかったですか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-18 09:21
引用:

なちゃさんの書き込み (2004-08-18 09:16) より:
引用:

Jittaさんの書き込み (2004-08-18 09:02) より:
 あと、"Shift_JIS"(アンダーバー)ではなく、"Shift-JIS"(ハイフン)です。


アンダーバーの方が正しくなかったですか?


あれれ?いちおう、MSDNの、「GetEncodingメソッド(String)」を見ているのですが・・・
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemtextencodingclassgetencodingtopic2.asp
引用:

プラットフォームによっては、特定のコード ページがサポートされていない場合があります。たとえば、日本の shift-jis コード ページ (コード ページ 932) は、Windows 98 の米国版ではサポートされていない場合があります。この場合、次に示す C# コードが実行されると、 GetEncoding メソッドは NotSupportedException をスローします。

Encoding enc = Encoding.GetEncoding("shift-jis");


↑ハイフンですよね?
どか
会議室デビュー日: 2004/07/17
投稿数: 14
投稿日時: 2004-08-18 10:18
送り側がEUC-JPやUTF-8で送っているのを、Shift-JISでデコードしていることは
ないと思います。

以下の方法では正しくデコードされていますので。。。
StreamReader reader = new StreamReader(Request.InputStream);
string postData = HttpUtility.UrlDecode(reader.ReadToEnd(),Encoding.GetEncoding("SHIFT_JIS"));
1

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