2009-02-16 44 views
2

我无法转义as3中的特殊字符。像as3那样在as3中转义字符

trace(escape("who are ü?")); 

回报谁%20顷%20%uFFFD%3F

trace(encodeURIComponent("who are ü?")); 

回报谁%20顷%20%EF%BF%BD%3F

而在javascript此

alert(encodeURIComponent("who are ü?")); 

返回谁%2 0顷%20%C3%BC%3F

,谁%20顷%20%FC%3F

任何建议如何让AS3返回转义特殊字符,如JavaScript是

alert(escape("who are ü?")); 

回报?为什么as3显然窒息?

(这里是一个很好的基准:http://www.ultrashock.com/forums/actionscript/as3-escape-vs-as2-escape-122046.html

+0

我用flex 3.0得到的是:who%20are%20%FC%3F这不是你想要的吗?你能重新检查吗?这是一个演示AIR应用程序(我正在运行Flex 3.0)! – dirkgently 2009-02-16 16:17:45

回答

5

看起来AS被逸出字符串作为UTF-16,而使用Javascript例子逸出为UTF-8。 escape没有定义如何处理非ascii字符,因此从JavaScript 1.5开始不推荐使用。您应该使用功能encodeURIComponent来代替,它被定义为以UTF-8格式转义 - 这应该在不同的实现中保持一致。如果您需要AS行为,我不认为Javascript中有本地函数,但您可以使用here提供的函数。

1

虽然我的IDE(intellij)正在显示,保存和加载特殊字符,但它们被保存在1252中。切换到UTF-8已解决了这个问题。