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

Response.Redirectした先で文字化け

1
投稿者投稿内容
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2002-12-18 01:12
はじめまして。
ASP.NET(VB.NET)で開発をしています。

コード:
Response.Redirect("http://www.xxx.com?aaa=test&bbb=テスト")

上記のようにResponse.Redirectすると、遷移先のページが文字化けしてしまいます。
現状をまとめますと、
  • 通常どおりアドレス欄にURLを入力して開く場合には文字化けしない。
  • 遷移先のページはShift-JISで記述されているが、IEで西ヨーロッパ言語として認識される。
  • Response.Charset("shift_jis")なども指定してみたが、うまくいかない。
  • 遷移先のページは別システムなので、こちらからは手出しができない。
  • 遷移先のページには <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">の記述がある。
といったかんじです。
どなたかこのような現象が起こる原因をご存知でしたら、アドバイスいただきたいです。
よろしくお願いいたします。
biac
大ベテラン
会議室デビュー日: 2001/10/22
投稿数: 106
投稿日時: 2002-12-18 15:27
引用:

遷移先のページは別システムなので、こちらからは手出しができない。


…となると、原理的には、解決する手段はありません。
遷移先のページ (サーバ) とブラウザとの関係なのですから。

引用:

遷移先のページには <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">の記述がある。


x-sjis は、古い記述で、今は Shift_JIS と書くべきです。
が、IE にエンコードの自動判定をさせる設定にしていると、そんなこととは関係無しに、meta 要素を無視してくれることがあるようです。

また、meta 要素で charset を指定するのは、あくまでも補助手段であって、本来は http ヘッダで行うべきものです。 問題のページの http ヘッダも確認してみては?

参考:

それから。
引用:
Response.Redirect("http://www.xxx.com?aaa=test&bbb=テスト")


URL の中に日本語を含めることはできません。 cgi へのパラメータとしては、実体参照 (&amp; など) も使えません (%xx は OK)。 → RFC 2396


---
ASP.NET (魔法の杖) を使いこなすために…
ユニバーサル HTML/XHTML
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2002-12-18 22:10
biacさん

回答ありがとうございます。
ご指摘いただいた、
引用:
x-sjis は、古い記述で、今は Shift_JIS と書くべきです。

引用:
また、meta 要素で charset を指定するのは、あくまでも補助手段であって、本来は http ヘッダで行うべきものです。

は、承知の上です。(別システムなので直したくても直せないのです)

また、
引用:
URL の中に日本語を含めることはできません。

は、Redirectメソッドの引数に与えた文字列は勝手にURLエンコードされるようなので、手抜きコーディングをしてました。
ただ、リファレンスなどに「エンコードされます」と明記されているわけではないようなので、やはりちゃんとエンコードしてから渡したほうがよいですね。


引用:
IE にエンコードの自動判定をさせる設定にしていると、そんなこととは 関係無しに、meta 要素を無視してくれることがあるようです。


ここがヒットでした。単純にIEの「表示−エンコード−自動選択」にチェックが入ってるだけでした。
参考:Microsoft Knowledge Base

どうもお騒がせいたしました

[ メッセージ編集済み 編集者: He 編集日時 2002-12-18 22:14 ]

[ メッセージ編集済み 編集者: He 編集日時 2002-12-18 22:14 ]
1

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