许多编程系统(如ICU,Java,COM和CLR)使用UTF-16在处理过程中对字符串数据进行编码。在这些系统中暴露错误相对困难,因为常用的字符在Basic Multilingual Plane内,因此只需要一个编码单元以UTF-16编码。
以前我使用过表情符号字符,例如,以验证事情是否正常;但我遇到的问题是,解析器拒绝非字母字符,因此断然拒绝我试图使用的表情符号。
我可以使用各种Unicode类别中的哪些好/可识别的例子来编写好的测试?
答案 0 :(得分:4)
摩门教徒在19世纪开发的Deseret alphabet是在BMP之外进行编码的,但是由在Unicode中被认为是字母的字符组成,而且与其他一些古代剧本不同,如Ugaritic或埃及象形文字,Deseret是一个套管脚本,意味着每个字母都有大写和小写的变体。
Deseret Unicode block, U+10400 - U+1044F (PDF)
使用Deseret进行测试揭示了Java处理Unicode的一些缺陷。例如,s1.equalsIgnoreCase(s2)
其中s1和s2是包含相同Deseret字母的大写和小写版本的字符串,返回false,因为equalsIgnoreCase
方法无法正确处理代理项对。
编辑添加:我刚刚通过查看Unicode code charts:“Warang Citi”或维基百科拼写它"Varang Kshiti", the script of the Ho language来发现另一个。这是印度大约一百万人使用的一种语言的套文。
Warang Citi Unicode block, U+118A0 - U+118FF (PDF)
不区分案例的古代文字通常也不在BMP之内,例如Lydian,Phoenician和Aramaic。