suchen

Heim  >  Fragen und Antworten  >  Hauptteil

object-c – Hilfe ~ Unicode zu NSString

Wie der Titel schon sagt, habe ich online relativ alte zu NSPropertyListSerialization gefunden, aber ich kann diese Klassenbibliothek nicht zum Herunterladen auf Github finden...

欧阳克欧阳克2745 Tage vor992

Antworte allen(2)Ich werde antworten

  • 習慣沉默

    習慣沉默2017-06-21 10:13:44

    API都写的很 清楚了 Use propertyListWithData:options:format:error: instead.
    [NSPropertyListSerialization propertyListWithData:tempData options:NSPropertyListImmutable format:NULL error:NULL];

    系统库不能解决问题?

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-06-21 10:13:44

    测试代码:

    NSString *dataStr = @"求助~ Unicode 转 NSString";
        
    NSString *utf8Str = [NSString replaceUnicode:dataStr];    
    NSLog(@" utf8Str = %@",utf8Str);
        
    NSString *unnicodeStr = [NSString utf8ToUnicode:utf8Str];    
    NSLog(@" unicode = %@",unnicodeStr);

    运行结果:

    把这两个方法写到NSString分类中

    //Unicode转UTF-8
    + (NSString*) replaceUnicode:(NSString*)aUnicodeString
    {
        NSString *tempStr1 = [aUnicodeString stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
        
        NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
        
        NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
        
        NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
        
        NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData
                               
                                                               mutabilityOption:NSPropertyListImmutable
                               
                                                                         format:NULL
                               
                                                               errorDescription:NULL];
        
        return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];
        
    }
    // utf8转unnicode
    +(NSString *) utf8ToUnicode:(NSString *)string
    {
        NSUInteger length = [string length];
        
        NSMutableString *str = [NSMutableString stringWithCapacity:0];
        
        for (int i = 0;i < length; i++) {
            
            unichar _char = [string characterAtIndex:i];
            //判断是否为英文和数字
            if (_char <= '9' && _char >= '0') {
                
                [str appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
            } else if(_char >= 'a' && _char <= 'z') {
                
                [str appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
            } else if(_char >= 'A' && _char <= 'Z') {
                
                [str appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
            } else {
                [str appendFormat:@"\\u%x",[string characterAtIndex:i]];
            }
        }
        return str;
    }

    Antwort
    0
  • StornierenAntwort