Flash 编码url:%9A显示为?-菱形。。。如何让浏览器正确解释%9A
我正在从flash生成一个url(用于facebook对话框):Flash 编码url:%9A显示为?-菱形。。。如何让浏览器正确解释%9A,flash,browser,encoding,urlrequest,navigatetourl,Flash,Browser,Encoding,Urlrequest,Navigatetourl,我正在从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_p
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
这是编码的url:试试
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" );
发件人: 创建一个URLRequest对象 如果
System.useCodePage
为true
,则使用
系统代码页,而不是Unicode
如果System.useCodePage
为false
,则使用
Unicode,而不是系统代码页
说:
必须首先根据UTF-8对非ASCII字符进行编码
[STD63],然后是相应UTF-8序列的每个八位组
必须进行百分比编码,才能表示为URI字符
这意味着“š”
必须在URL中编码为%C5%A1
。尝试将System.useCodePage
设置为false
,即使文档不明确,因为使用Unicode编码并不一定意味着UTF-8
我还应该提到,如果您确实在文件中使用了
“š”
,则您的文件应保存为UTF-8
编码。0x9A
不是有效的UTF-8字节序列。你是怎么创造的?它应该是%C5%A1
对于š
,它显然是由flash AS3 var lvo_req:URLRequest=new URLRequest(lvs_url)创建的,因为它是一个š,但当它到达浏览器地址bar1-System.useCodePage=false时,它是一个%9A。。。没有帮助2-必须首先根据UTF-8[STD63]对非ASCII字符进行编码,然后对相应UTF-8序列的每个八位字节进行百分比编码,以表示为URI字符。。。很抱歉,我不知道这是什么意思3-这意味着“š”必须编码为%C5%A1。。。当我真的把它放到浏览器地址栏中时,它工作了,但当然我的URL是在flash中用各种字符动态生成的,所以我不能硬编码。@dsd你能澄清一下吗,它改变了什么吗?或者你是说它已经是假的了。您是否已将文件保存在UTF-8中?我的flash编辑/首选项/操作脚本/打开导入和保存导出设置为UTF-8。。。现在我正在阅读关于URLRequest.contentType…@dsd你的意思是你在设置系统后仍然得到%9A
。使用codepage
到false
?@dsd我刚刚发现AS3应该有encodeURIComponent
(与javascript相同),你可以试试看