我制作了一个程序,人们可以在其中输入 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 专家,也不知道如何测试它,因为有成千上万个字符,所以我可能错过了一个,这意味着用户可能会意外收到错误并有可能导致应用程序崩溃.