- - PR -
Flash MX 用のエンコーディング形式は?
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-10-22 18:15
Flash MX をクライアントとしてサーブレットにリクエストを出し、
返答されるHTMLデータを解析する形式でWEBアプリケーションの テストを行っています --- 以下 Flash でのあるボタンのスクリプト on(release) { System.useCodepage = true; MySendVars = new LoadVars(); MySendVars._class = "SampleClass"; MySendVars._mNm = "getAllData"; MyLoadVars = new LoadVars(); mySendVars.sendAndLoad( "http://(サーバ名称) MyLoadVars.onLoad = function( success ) { trace( MyLoadVars.toString() ); --- @ } } でめでたくサーブレットはキックできて、返答は帰ってきたのですが、 スペース等が %20 < が %3C などとエンコード形式の問題?でHTML タグとして 認識できない状態です。 というか、@のtrace文での出力がそうなっているのですが... 現在、サーブレット側のエンコーディングは res.setContentType( "text/html; charset=Shift_JIS"); としているのですが、これではまずいのでしょうか? ちなみに、sendAndLoad をせずに MySendVars.send( URL, "_self","POST"); で結果をブラウザウィンドウで表示させるとHTML形式は正常にHTMLとして (変な表現ですね)表示されます どなたかお知恵を拝借できないでしょうか? | ||||
|
投稿日時: 2003-10-22 18:33
URLDecoder でデコードしてあげれば、よいのではないでしょうか?
※でも、そのクライアントでは、URLDecoderって使えそうに無いですね #ブラウザで正しく表示できるのは、内部でデコードを行っているからです。 エンコードしないようにするには、 Servletの実装で、エンコードしないように実装する必要があります。 仰っている通り、HTTPのヘッダー値を見直せば、よいような気がします。 [ メッセージ編集済み 編集者: eiji 編集日時 2003-10-22 18:43 ] | ||||
|
投稿日時: 2003-10-22 20:00
えっと、headerはこれでよろしいと思います。 Action Scriptで、System.useCodepage = true;としている限りですが。 この問題は、はFlash Plugin のバージョンによって扱いが異なっているようで 比較的新しい6.0.79.0以降ではきちんと認識されると思います。 | ||||
|
投稿日時: 2003-10-22 20:03
eiji 様
ご返答ありがとうございます 私には、サーブレットをエンコーディングなしにする実装するのは敷居が だいぶ高かったので素直にActionScript での(un)Encoding 方法を調べたら 、ありました!「unescape関数」を使うんだそうです。(きっとActionScript に詳しい人には当然の話なんでしょうね) 以下修正後のソースです (といっても、trace( Unescape( MyLoadVars.toString() ) );しか 変わっていませんが) on(release) { System.useCodepage = true; MySendVars = new LoadVars(); MySendVars._class = "SampleClass"; MySendVars._mNm = "getAllData"; MyLoadVars = new LoadVars(); mySendVars.sendAndLoad( "http://a0957:8010/Fact/servlet/HttpMethodRunner", MyLoadVars,"POST"); MyLoadVars.onLoad = function( success ) { trace( Unescape( MyLoadVars.toString() ) ); } } 【返答】 <table border = 1><tr><td>1</td><td>real-Dream</td></tr></table> &onLoad=[type Function] 少し余計な文字も返答に入っているようですが、これはなんとかなりそうです 重ねて御礼を申し上げます | ||||
|
投稿日時: 2003-10-22 20:18
おー、unescape関数ってマルチバイト文字を含んでいても
きちんと動作しますね。勉強になりました。 | ||||
1
