2009-02-16 21 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已解決了這個問題。