4

我从我的 Flex 应用程序的 servlet 加载一些 XML,如下所示:

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

正如你可以想象_servletURL的那样是http://foo.bar/path/to/servlet

在某些情况下,此 URL 包含重音字符(长篇大论)。我将unescaped字符串传递给URLRequest,但似乎 flash 对其进行了转义并调用了转义的 URL,这是无效的。想法?

4

3 回答 3

5

我的朋友路易斯想通了:

您应该使用 encodeURI 进行 UTF8URL 编码 http://livedocs.adobe.com/flex/3/langref/package.html#encodeURI()

但不是 unescape,因为它不会转义为 ASCII,请参见 http://livedocs.adobe.com/flex/3/langref/package.html#unescape()

我认为这就是我们在 URL 中得到 %E9 而不是预期的 %C3%A9 的地方。

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 回答