从int> 127创建NSString UTF8 / Unicode字符

时间:2014-06-07 11:29:08

标签: objective-c unicode nsstring

我想从int值创建字符,其值> 127。

例如:我计算133,我想要角色Å
或者我计算149,我想要字符Õ

(见http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=dec

我使用以下代码,它不会返回正确的字符:

int pos = 133;    
NSString *TF = [NSString stringWithFormat:@"%c", pos];

这是因为int> 127所以它不是常规ASCII(可以用%c来完成)

%C也不起作用。

我需要一些编码吗?或stringWithFormat中的其他运算符? 我查看了CFString课程,但我不明白我如何在这里使用它以及它是否适用。

1 个答案:

答案 0 :(得分:0)

你使用什么编码133编码字符Å?

来自网站

Unicode                UTF-8
code point  character  (dec.)   name
U+00C5      Å          195 133  LATIN CAPITAL LETTER A WITH RING ABOVE

133不是有效值,您想要的值是:195 133(两个字节)。对于最多127个字符,UTF8只有一个字节。

char utf8[2] = {195, 133};
NSString *s = [NSString stringWithUTF8String:utf8];
NSLog(@"s: '%@'", s);

NSLog输出:

  

s:'Å'

网页的代码点为U + 00C5,使用UTF32:

u_int32_t bytes = 0x00C5;
NSString *s = [[NSString alloc] initWithBytes:&bytes length:4 encoding:NSUTF32LittleEndianStringEncoding];
NSLog(@"s: '%@'", s);

NSLog输出:

  

s:'Å'