Символ Unicode из кода в строке (Obj-C) - PullRequest
2 голосов
/ 30 января 2012

У меня есть шестнадцатеричное значение Unicode в строке NSString - как вывести символ; вот что у меня есть:

NSLog(@"\U0001D000");

NSMutableString *hexString = [[NSMutableString alloc] initWithString:@"0001D000"];
[hexString insertString:@"\\U" atIndex:0];
NSLog(@"%@", hexString);

Первый NSLog выводит символ; второй просто выдает вывод "\ U0001D000"

Я перепробовал множество комбинаций, и я в растерянности - например, я попытался

NSLog(@"\U%@", hexString);

Но это дает ошибку компилятора, так как он ищет строку чисел после \ U

1 Ответ

4 голосов
/ 30 января 2012

Если вашему персонажу требуется суррогатная пара (от U + 10000 до U + 10FFFF), используйте CFStringGetSurrogatePairForLongCharacter для преобразования кодовой точки Unicode в суррогатную пару UTF-16, а затем -initWithCharacters:length: для преобразования ее в строку NSString. Например:

UniChar c[2];
CFStringGetSurrogatePairForLongCharacter(0x1D000, c);
NSString *s = [[NSString alloc] initWithCharacters:c length:2];

Для других символов (CFStringGetSurrogatePairForLongCharacter возвращает FALSE), вы можете пропустить преобразование и сразу перейти к -initWithCharacters:length:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...