2013-07-30 38 views
2

試圖製作一個文本字段,讓用戶在沒有反斜槓的情況下寫入unicode。我想在輸入後加上反斜槓。因此,用戶鍵入u2605,代碼將其轉換爲「\ u2605」,然後將其轉換爲Unicode字符並將其插入到文本流中。AS3 - 「 u2605」與「\ u」+「2605」不一樣嗎?

我的代碼:

  • 這個工程:

    span.text = publicFunctions.htmlUnescape(he.encode("\u2605")) 
    
  • 這不起作用:

    span.text = publicFunctions.htmlUnescape(he.encode("\\u"+"2605")) 
    

如何使作爲一個字符串unicode字符串?

嘗試了各種各樣的東西,escape(unescape()),轉換爲數字,「\ u」,「\ u」...沒有什麼幫助。

trace(「\ u2605」==「\ u」+「2605」)...將返回false。因此, trace(「\ u2605」==「\ u」+「2605」)

回答

2
"\u2605"

與單個字符,與代碼點2605的字符的字符串,而"\\u" + "2605"是具有6個字符(反斜槓,所述u和四位數字)的字符串。

如果你想從四位數構造一個unicode字符,你應該可以使用String.fromCharCode。事情只是轉義序列使用了一個hexadecimal數字,而該方法顯然需要一個十進制數。因此,如果用戶輸入一個十六進制字符串,你將不得不轉換,首先:

trace(String.fromCharCode(parseInt('2605', 16)) == '\u2605')); 
+0

不工作 使用String.fromCharCode(2605)=矩形 '\ u2605'=星 跟蹤(使用String.fromCharCode(2605)== '\ u2605'))返回false –

+0

剛編輯我的答案,現在應該是正確的。 – poke

+0

完全工作:D不會想到這個解決方案。非常感謝:D –

0

這是一個有趣的問題!我不認爲你可以連接字符串文字並實現你想要做的事情。當字符串文字最初形成時,相關的字符轉義發生,這意味着您首先需要整個序列。

但是,您應該能夠使用用戶提供的號碼並動態生成一個帶有String.fromCharCode(...)的Unicode字符串。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/String.html#fromCharCode()

+0

試過了,我不認爲我有多少,如果在u2605用戶類型...這是一個明星。和String.fromCharCode(2605)是一個矩形。 –

相關問題