-1

我想将此 int num: 转换53392为 cyrillic letter A。我用这个:NSString *string = [NSString stringWithFormat:@"%c", 53392];但这现在可以正常工作并返回给我奇怪的符号。有人能帮我吗?

4

3 回答 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 回答