0

如何在 iOS 中将unicode范围 附加U+0000U+0099NSString。我已使用以下链接作为参考http://en.wikipedia.org/wiki/List_of_Unicode_characters

4

2 回答 2

0

我不确定这是 100% 正确的解决方案,但它有效:

NSString *uniString = [NSString stringWithFormat:@"%C", (unichar)0x0021];

0x0021你的 unicode 字符代码在哪里。

您可以使用此循环对其进行测试:

for (unichar ch = 0x0000; ch <= 0x0099; ch++) {
    NSString *uniString = [NSString stringWithFormat:@"%C", ch];
    NSLog(@"%@", uniString);
}
于 2013-05-23T07:47:30.113 回答
0

尝试使用这个....

NSString使用 UTF-16 在内部存储代码点,因此您要查找的范围内的代码点(U+1F300 到 U+1F6FF)将存储为代理对(四个字节)。尽管它的名字,characterAtIndex:(和 unichar)不知道代码点,并且会给你它在你给它的索引处看到的两个字节(你看到的 55357 是 UTF-16 中代码点的主要代理)。

要检查原始代码点,您需要将字符串/字符转换为 UTF-32(直接对其进行编码)。为此,您有几个选择:

1) 获取构成代码点的所有 UTF-16 字节,并使用此算法CFStringGetLongCharacterForSurrogatePair将代理对转换为 UTF-32。

2) 使用 dataUsingEncoding: 或getBytes:maxLength:usedLength:encoding:options:range:remainingRange:将 NSString 转换为 UTF-32,并将原始字节解释为 uint32_t。

3)使用像ICU这样的库。

于 2013-05-23T07:05:49.690 回答