【发布时间】:2013-07-31 05:20:10
【问题描述】:
我制作了一个程序,人们可以在其中输入 4 个字母,它会为您提供它插入到 textflow 元素中的相应 unicode 字符。现在我遇到了很多问题,但最终我在一些帮助下成功了。现在,当我输入“dddd”或“ddd1”作为测试时,问题就来了。
我得到了错误 - “在输入中遇到了未配对的 Unicode 代理项。”
现在我花了大约 2 天的时间对此进行测试,并且绝对没有任何事件触发使我能够在错误发生之前对其进行测试。
代码:
str = "dddd"
num = parseInt(str,16)
res = String.fromCharCode(num)
实际发生错误时 res 等于 "?"在控制台中...但是如果您使用 if(res == "?") 对其进行测试,它会返回 false。
我的问题: 现在我搜索和搜索并发现在 adobes as3 参考中没有关于此错误的描述,但 2 天后我发现此页面用于 javascript:http://scripts.sil.org/cms/scripts/page.php?item_id=IWS-Chapter04a
它说 - 但是,0xD800–0xDFFF 范围内的代码单元有特殊用途。这些代码单元,称为代理代码单元
所以现在我测试:
if( num > 0 && num < uint(0xD800)) || ( num > uint(0xDFFF) && num < uint(0xFFFF) ){
get unicode character.
}
我的问题很简单,如果我理解正确,这实际上会防止错误发生吗? - 我不是 unicode 专家,也不知道如何测试它,因为有成千上万个字符,所以我可能错过了一个,这意味着用户可能会意外收到错误并有可能导致应用程序崩溃.
【问题讨论】:
标签: actionscript-3 unicode actionscript hex