AS3 - " \ u2605"与" \\ u" +" 2605"?不一样

时间:2013-07-30 00:00:09

标签: string actionscript-3 actionscript

尝试创建一个文本字段,人们在没有反斜杠的情况下编写unicode。我想在输入后添加反斜杠。因此用户输入u2605并将代码转换为“\ u2605”,然后将其转换为unicode字符并将其插入文本流中。

我的代码:

  • 这有效:

    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。所以将 追踪(“\ u2605”==“\ u”+“2605”)

2 个答案:

答案 0 :(得分:2)

"\u2605"是一个包含单个字符的字符串,该字符的代码点为2605,而"\\u" + "2605"是一个包含6个字符的字符串(反斜杠,u和四位数字。)

如果您只想从四位数构建一个unicode字符,您应该可以使用String.fromCharCode。问题在于转义序列使用hexadecimal数字,而该方法显然采用十进制数字。因此,如果用户输入十六进制字符串,则必须先转换它:

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

答案 1 :(得分:0)

这是一个有趣的问题!我认为你不能连接字符串文字并实现你想要做的事情。最初形成字符串文字时会发生相关的字符转义,这意味着您首先需要整个序列。

但您应该能够获取用户提供的数字并使用String.fromCharCode(...)动态生成Unicode字符串。

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