将Unicode Hyphen-minus插入到String中会导致错误

时间:2012-06-21 18:54:39

标签: ios unicode nsstring uitextview

我试图在文本字符串中插入一个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讨论,但是我没有找到一个解释我的例子之间的不同之处导致第一个错误。洞察力非常感谢。

1 个答案:

答案 0 :(得分:2)

Unversal角色名称对其使用有一些限制。在C99和C ++ 98中,不允许使用引用基本字符集中字符的字符集(包括U + 002D)。

C ++ 11已更新此要求,因此如果您在字符串或字符文字内,则可以使用引用基本字符的UCN。根据您使用的编译器版本,我猜您可以使用Objective-C ++ 11来使您的代码合法化。

那就是说,因为这个字符是ASCII和基本字符集的一部分,你为什么不按字面意思写它?

@"-"