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

ASP.NETからASPへの漢字文字列を含んだクッキーで渡す場合について

1
投稿者投稿内容
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2004-02-17 15:02
お世話になります。

「ASP.NETで漢字文字列を含む値をクッキー値として保存した場合、
ASP.NETではそのままRequest.Cookiesで読めば正しい漢字文字列
を取得できる。ただし、ASP側では正しい漢字文字列を取得できない
ので、ASP.NETとASP間で漢字文字列を含む値はクッキーでは渡せない」
ことで悩んでおります。

参考として、逆の場合ではあるが、ASPからASP.NETへでは
http://support.microsoft.com/default.aspx?scid=kb;en-us;313282
(ASP.NET Does Not Encode Cookies in UrlEncode Format by Default)
「Microsoft Active Server Pages (ASP) と ASP.NET コードで Cookies を
共有する ASP.NET アプリケーションを配置したときに、データのエンコードやア
ンエンコードが正常に行われません。」

ASP.NETで漢字文字列(例:本社)を保存した場合、
「譛ャ遉セ」とクッキーファイルに保存される

これをASP.NETのRequest.Cookiesで取得すると、「本社」となるが、

ASPのRequest.Cookiesで取得すると、「譛ャ遉セ」となる

Server.UrlEncodeでURLエンコードしてから保存すると、
strPostMailforSender=%e6%9c%ac%e7%a4%beと保存される

これをASPで取得すると、「譛ャ遉セ」となる
ASP.NETで取得すると、「%e6%9c%ac%e7%a4%be」となる
ASP.NETのServer.UrlDecodeで取得すると、「本社」となる

%96%7B%8E%D0のように保存されない


よろしくお願いします。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-02-17 15:15
ども、ほむらです。
-------
エンコード(charset)が間違えているみたいですね。
ASP.NET側がたぶん UTF-8になっているのかも?

UTF-8「本社」をSHIFT_JISで表示するとこんな感じになります。
>「譛ャ遉セ」
OpS
ベテラン
会議室デビュー日: 2003/12/09
投稿数: 50
投稿日時: 2004-02-17 16:28
ありがとうございます。
確かにASP.NET側ではcharsetがutf-8でした。
そこで、クッキー値を読む直前でcharsetをutf-8にして
その後、charsetをShift_JISに戻すことで、
クッキー値「本社」を取得できました。
1

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