我想将此 int num: 转换53392
为 cyrillic letter A
。我用这个:NSString *string = [NSString stringWithFormat:@"%c", 53392];
但这现在可以正常工作并返回给我奇怪的符号。有人能帮我吗?
问问题
1589 次
3 回答
3
首先,使用%C
格式(大写字母C)。其次,西里尔字母 A 的代码是 0x0410,而不是您的号码。
于 2012-09-22T19:56:33.967 回答
0
创建包含 unicode 字符的 NSString 的正确方法是使用 stringWithUTF8String 和 \u#### 转义序列,如下所示:
NSString *aString = [NSString stringWithUTF8String:"To be continued\u2026"];
于 2012-09-22T19:46:35.680 回答
0
您拥有的整数 53392 是将两个字节 0xD0 和 0x90 打包成一个整数,它们是 Unicode 0x410(十进制 1040)西里尔大写字母 A 的 UTF-8 编码。
有多种方法可以进行转换,这里有两种。
如果您知道 UTF-8 序列(如果需要,您可以从整数中提取),您可以NSString
使用如下序列将其转换为:
char buf[2];
buf[0] = 0xD0;
buf[1] = 0x90;
NSString *cyrillicA = [[NSString alloc] initWithBytes:buf length:2 encoding:NSUTF8StringEncoding];
如果您知道 UTF-16 值,则可以使用 %C 格式:
NSString *cyrillicA = [NSString stringWithFormat:@"%C", 0x410];
于 2012-09-22T20:22:33.943 回答