我想使用'<'的Unicode版本在NSString中但编译器产生错误:
"Character '<' cannot be specified by a universal character name"
当我使用时:
NSString *text = @"Some Text: \u003C";
'&LT;'似乎是一个特殊的角色,以及“=”和其他一些人,所以什么是插入文字'&lt;'的方式在字符串中,没有像'<'
这样使用"some string <"
:{{1}}?
我无法控制字符串值本身,而且上面的值是内联的,用于演示目的。
答案 0 :(得分:9)
我不相信编译器错误已得到解决。
"Character '<' cannot be specified by a universal character name"
"Universal character name refers to a control character"
似乎您不能将\U000000xx
文字语法用于许多2个字节的ASCII字符,但以下情况除外:
\U00000024
\U00000040
\U00000060
\U000000A0
至\U000000FF
一个简单的解决方法是使用[NSString stringWithFormat:@"%C", 0x000000xx]
示例&#39;&lt;&#39;字符:
NSString *text = [NSString stringWithFormat:@"Hello %C", 0x003C]";
有关更多选项,请参阅xcode UTF-8 literals。
答案 1 :(得分:4)
如果已从包含“Hello \ u003C”且带有逐字的文本文件中读取该字符串 反斜杠然后你会有
NSString *text = @"Hello \\u003C";
如果文本文件只包含ASCII字符
您可以使用NSNonLossyASCIIStringEncoding
将“\ uNNNN”解码为相应Unicode字符的事实:
NSData *data = [text dataUsingEncoding:NSASCIIStringEncoding];
NSString *converted = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];
已添加:您可以使用
直接从文件创建字符串NSString *text = [NSString stringWithContentsOfFile:pathToFile encoding:NSNonLossyASCIIStringEncoding error:NULL];
并且所有Unicode转义序列都已正确转换。
答案 2 :(得分:3)
clang遵循C标准,由于某种原因不允许这样做:
C99 6.4.3p2:通用字符名称不应指定短标识符小于00A0而不是0024($),0040(@)或0060(`)的字符,也不能指定D800到DFFF范围内的字符。包括在内。)