我试图在文本字符串中插入一个unicode连字符。我看到“无效的通用字符”错误,包含以下内容:
u + 002D(连字符 - 减号)
[textViewContent insertString:@"\u002D" atIndex:cursorPosition.location];
然而,这些工作正常:
u + 2212(减号)
[textViewContent insertString:@"\u2212" atIndex:cursorPosition.location];
u + 2010(连字符)
[textViewContent insertString:@"\u2010" atIndex:cursorPosition.location];
我在这里讨论了几个现有的Unicode讨论,但是我没有找到一个解释我的例子之间的不同之处导致第一个错误。洞察力非常感谢。
答案 0 :(得分:2)
Unversal角色名称对其使用有一些限制。在C99和C ++ 98中,不允许使用引用基本字符集中字符的字符集(包括U + 002D)。
C ++ 11已更新此要求,因此如果您在字符串或字符文字内,则可以使用引用基本字符的UCN。根据您使用的编译器版本,我猜您可以使用Objective-C ++ 11来使您的代码合法化。
那就是说,因为这个字符是ASCII和基本字符集的一部分,你为什么不按字面意思写它?
@"-"