解决oc中中文乱码问题

该博客介绍了如何在Objective-C中解决NSDictionar和NSArray中文乱码的问题。提供了两个类别扩展,一个是NSDictionary+Unicode,包含了`my_description`方法将字典内容转换为非丢失ASCII编码,以及`logDic:`方法用于打印含有中文的字典。另一个类别扩展是NSArray+Coding,重写了`descriptionWithLocale:`方法,确保数组在打印时中文字符正确显示。

//解决NSDitionary中文乱码问题//解决NSArray中文乱码问题

//
//  NSDictionary+Unicode.h


#import <Foundation/Foundation.h>

@interface NSDictionary (Unicode)

@end

============================================

//
//  NSDictionary+Unicode.m

#import "NSDictionary+Unicode.h"

@implementation NSDictionary (Unicode)
-(NSString*)my_description{
    NSString *desc=[self my_description];
    desc = [NSString stringWithCString:[desc cStringUsingEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding];
    return desc;
}
//解决NSDitionary中文乱码问题
-(void)logDic:(NSMutableDictionary *)dic
{
    NSString *tempStr1 = [[dic description] stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
    NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
    NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
    NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
    NSString *str = [NSPropertyListSerialization propertyListFromData:tempData mutabilityOption:NSPropertyListImmutable format:NULL errorDescription:NULL];
    NSLog(@"dic:%@",str);
}

@end

===============================================================

//
//  NSArray+Coding.h
//  39-周屹-OC考试


#import <Foundation/Foundation.h>

@interface NSArray (Coding)

@end

=========================================================

//
//  NSArray+Coding.m


#import "NSArray+Coding.h"

@implementation NSArray (Coding)
//解决NSArray中文乱码问题
- (NSString *)descriptionWithLocale:(id)locale{
    NSMutableString *strM=[NSMutableString string];
    [strM appendString:@"(\n"];
    
    for (id obj in self) {
        [strM appendFormat:@"\t%@,\n",obj];
    }
    [strM appendString:@")"];
    return strM;
}


@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值