0

我正在从 Flash 生成一个 url(用于 facebook 对话框):

var lvs_url = "http://www.facebook.com/dialog/feed?app_id=208524139202627&name=š š&caption=&description=&link=http://apps.facebook.com/celjska_puzzle&redirect_uri=http://apps.facebook.com/celjska_puzzle/"
var lvo_req : URLRequest = new URLRequest( lvs_url ) ;
navigateToURL( lvo_req , "_blank" );

但是当 url 进入浏览器时,š已经变成了%9A,然后在 facebook 弹出窗口中显示为?-diamond 。

但是,浏览器可以使用%20

这是编码的网址:http ://www.facebook.com/dialog/feed?app_id=208524139202627&name=%9A%20%9A&caption=&description=&link=http://apps.facebook.com/celjska_puzzle&redirect_uri=http:// /apps.facebook.com/celjska_puzzle/

4

1 回答 1

0

尝试encodeURIComponent

var lvs_url = "http://www.facebook.com/dialog/feed?app_id=208524139202627&name="+encodeURIComponent("š š")+"&caption=&description=&link=http://apps.facebook.com/celjska_puzzle&redirect_uri=http://apps.facebook.com/celjska_puzzle/";
var lvo_req : URLRequest = new URLRequest( lvs_url ) ;
navigateToURL( lvo_req , "_blank" );

来自 [docs](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequest.html#URLRequest()) :

创建一个 URLRequest 对象。

如果System.useCodePagetrue,则使用系统代码页而不是 Unicode 对请求进行编码。

如果System.useCodePagefalse,则使用 Unicode 而不是系统代码页对请求进行编码。

规范说:

非 ASCII 字符必须首先根据 UTF-8 [STD63] 进行编码,然后必须对相应 UTF-8 序列的每个八位字节进行百分比编码才能表示为 URI 字符。

这意味着"š"必须按照%C5%A1url 进行编码。尝试设置System.useCodePagefalse,即使文档不明确,因为使用 Unicode 编码 并不一定意味着UTF-8.

UTF-8我还应该提到,如果您确实在文件中使用,您的文件应该以编码保存"š"

于 2012-07-15T14:14:25.747 回答