4

次のように、Flex アプリケーションのサーブレットから XML をロードします。

_loader = new URLLoader();
_loader.load(new URLRequest(_servletURL+"?do=load&id="+_id));

ご想像のとおり、 http://foo.bar/path/to/servlet_servletURLのようなものです

場合によっては、この URL にアクセント付きの文字 (長文) が含まれています。unescapedに文字列を渡しましたURLRequestが、Flash がそれをエスケープし、無効なエスケープされた URL を呼び出しているようです。アイデア?

4

3 に答える 3

5

私の友人ルイスはそれを理解しました:

encodeURIを使用する必要がありますUTF8URLエンコーディング http://livedocs.adobe.com/flex/3/langref/package.html#encodeURI()

ただし、ASCIIにエスケープ解除されるため、エスケープ解除されません。http ://livedocs.adobe.com/flex/3/langref/package.html#unescape()を参照してください。

これが、予想される%C3%A9ではなく%E9をURLで取得しているところだと思います。

http://www.w3schools.com/TAGS/ref_urlencode.asp

于 2008-09-17T20:49:48.947 に答える
4

これが異なるかどうかはわかりませんが、これは同じ URLRequest を実現するためのよりクリーンな方法です。

var request:URLRequest = new URLRequest(_servletURL)
request.method = URLRequestMethod.GET;
var reqData:Object = new Object();

reqData.do = "load";
reqData.id = _id;
request.data = reqData;

_loader = new URLLoader(request); 
于 2008-09-15T12:50:52.983 に答える
0

livedocsから:http://livedocs.adobe.com/flex/3/langref/flash/net/URLRequest.html

URLRequestオブジェクトを作成します。System.useCodePageがtrueの場合、要求はUnicodeではなくシステムコードページを使用してエンコードされます。System.useCodePageがfalseの場合、リクエストはシステムコードページではなくUnicodeを使用してエンコードされます。

このページには詳細情報があります:http://livedocs.adobe.com/flex/3/html/help.html?content = 18_Client_System_Environment_3.html

ただし、基本的には、URLRequestの前に実行される関数にこれを追加する必要があります(おそらくcreationCompleteイベントに入れます)

System.useCodePage = false;

于 2008-09-15T13:44:47.193 に答える