iOS-关于unicode编码


网络通信过程中常用的的一种编码及解码的方法,算是简单的加密...


一、


#pragma mark - NSString转化为unicode字符串


-(NSString *)turnToUnicodeWith:(NSString *)curStr{

    

    NSMutableString * result = [[[NSMutableString alloc] initWithString:@""] autorelease];

    

    for (int i=0; i<[curStr length]; i++) {

        

        NSRange range = NSMakeRange(i, 1);

        

        NSString * subStr = [curStr substringWithRange:range];

        

        NSData * data = [subStr dataUsingEncoding:NSUnicodeStringEncoding];

        

        NSString * tempStr = [NSString stringWithFormat:@"%@",data];

        

        char c1 = [tempStr characterAtIndex:[tempStr length]-5];

        

        char c2 = [tempStr characterAtIndex:[tempStr length]-4];

        

        char c3 = [tempStr characterAtIndex:[tempStr length]-3];

        

        char c4 = [tempStr characterAtIndex:[tempStr length]-2];

        

        [result appendFormat:@"%c%c%c%c",c3,c4,c1,c2];

        

    }

    

    

    

    return [result uppercaseString];

    

}




二、


#pragma mark - NSData转化为NSString


-(NSString *)turnToString:(NSData *)data{

    

    const char * buffer = [data bytes];

    

    NSInteger dataLengh = [data length];

    

    int  j=0;

    

    NSMutableString * resultStr = [[[NSMutableString alloc] initWithString:@""] autorelease];

    

    while (j<dataLengh) {

        

        char c1 = buffer[j];

        

        j = j+1;

        

        char c2 = buffer[j];

        

        j = j+1;

        

        char c3 = buffer[j];

        

        j = j+1;

        

        char c4 = buffer[j];

        

        NSString * str = [NSString stringWithFormat:@"%c%c%c%c",c1,c2,c3,c4];

        

        NSString * ascStr = [self replaceUnicode:str];

        

        [resultStr appendString:ascStr];

        

        j = j+1;

        

    }

    

    return resultStr;

    

}




三、


//unicode码转换为ascii字符


//比如码:"4e00" 转换为字符:""


-(NSString *)replaceUnicode:(NSString *)unicodeStr {

    

    NSString *tempStr0 = [NSString stringWithFormat:@"\\u%@",unicodeStr];

    

    NSString *tempStr1 = [tempStr0 stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];

    

    NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];

    

    NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];

    

    NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];

    

    NSString* resultStr = [NSPropertyListSerialization propertyListFromData:tempData

                           

                                                           mutabilityOption:NSPropertyListImmutable

                           

                                                                     format:NULL

                           

                                                           errorDescription:NULL];  

    

    

    

    NSString * returnStr = [resultStr stringByReplacingOccurrencesOfString:@"\r" withString:@""];

    

    

    

    return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];  

    

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值