如何将数字输入转换为包含变音符号的NSString? (等等。)

时间:2014-02-19 18:03:47

标签: objective-c nsstring utf

要将97到122范围内的数字十进制值x转换为表示该ASCII字符的NSString,可以直接调用:

[ NSString stringWithFormat: @"%c", x ]

如何为非ASCII字符创建NSString,例如:

  

ä,è,ñ,à,é,ç,ĝ,ŝ,š,ĥ,þ,ð,ĵ,ü,ś,ź,ż

来自严格的数字输入值? (例如,十进制UInt32,而不是从查找表中复制或要求任何其他NSString,Objective-C或Core Foundation数据类型。)

是否有一些在线工具可以查找每个角色需要的任何魔术十进制数值(UTF-foo?)?

2 个答案:

答案 0 :(得分:2)

如果你有Unicode值,那么你可以做

uint32_t code = 0x0125; // U+0125 is 'ĥ'
NSString *s = [[NSString alloc] initWithBytes:&code length:4 
                            encoding:NSUTF32LittleEndianStringEncoding];

即使对于“基本多语言平面”之外的单声道,这也适用,例如

uint32_t code = 0x01F604; //  = SMILING FACE WITH OPEN MOUTH AND SMILING EYES

上面的代码假定整数以小端字节顺序存储(即 适用于运行iOS或OS X的所有当前处理器的情况。字节顺序无关 方法是

uint32_t code = OSSwapHostToLittleInt32(0x0125);

在Xcode中,您可以在“字符查看器”中查找单声道 “编辑 - >特殊字符...”菜单。当然也有桌子 所有Unicodes都在Unicode 6.3 Character Code Charts

答案 1 :(得分:2)

您可以使用

[NSString stringWithFormat:@"%C", ch ];

使用大写%C表示unicode字符。见here