Критическая проблема NSSstring в Facebook восстановления друзей (IPhone Development) - PullRequest
0 голосов
/ 11 июля 2011

Мой вопрос касается специального символа в NSString.

Фактическое имя: - Юсуф Доган

Получить имя = Юсуф Доу \ 1005 *

Моего настоящего друга по имени fb зовут Юсуф Доган (отметьте пункт «g with ~ cap»).

Я принимаю это как NSdata и затем конвертирую в nsstring.

NSString * stringResponse = [[NSString alloc] initWithData: кодировка ответа: NSUTF8StringEncoding];

Но nsstring показывает это как

"Юсуф Доуфан"

Аналогичная причина со следующим.

Ricsi Zoványi as Ricsi Zov \ u00e1nyi

Pero Perić as Pero Peri \ u0107

Любое решение.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 января 2012

Вы можете попробовать это:

        NSString *source = [NSString stringWithString:_username];
        [_username release];
        NSMutableString *result = [[NSMutableString alloc] init];
        NSScanner *scanner = [NSScanner scannerWithString:source];
        [scanner setCharactersToBeSkipped:nil];
        while (![scanner isAtEnd]) {
            NSString *chunk;

            // Scan up to the Unicode marker
            [scanner scanUpToString:@"\\u" intoString:&chunk];
            // Append the chunk read
            [result appendString:chunk];

            // Skip the Unicode marker
            if ([scanner scanString:@"\\u" intoString:nil]) {

                // Read the Unicode value (assume they are hexa and four)
                unsigned int value;
                NSRange range = NSMakeRange([scanner scanLocation], 4);
                NSString *code = [source substringWithRange:range];
                [[NSScanner scannerWithString:code] scanHexInt:&value];
                unichar c = (unichar) value;

                // Append the character
                [result appendFormat:@"%C", c];

                // Move the scanner past the Unicode value
                [scanner scanString:code intoString:nil];
            }
        }
        _username = [[NSString stringWithFormat:@"%@",result] retain];
        [result release];
    }
0 голосов
/ 11 июля 2011

Вместо «NSUTF8StringEncoding» используйте «NSUTF16StringEncoding».Я думаю, что это может решить вашу проблему.

...