2 linshaolie linshaolie 于 2014.08.28 16:42 提问

OC中怎样将UTF8编码转换成中文

如题:有一个Person类,里面重写了description方法,实现返回姓名,年龄等信息。这样我可以直接通过NSLog(@"%@",per); 来输出对象信息。但是如果我把对象存入数组中,然后输出数组:NSLog(@"%@", array);这样输出的结果都是UTF8编码。如果对象per内部的信息是因为和数字的话结果不受影响,如果是中文的话输出的就是UTF8。这是为什么呢?如果才能让输出正常?

#import

@interface Person : NSObject

@property(nonatomic, retain) NSString *name;
@property(nonatomic, retain) NSString *sex;
@property(nonatomic, assign) int age;

  • (id)initWithName:(NSString*)name;

@end

///////////////////////////////////
#import "Person.h"

@implementation Person

  • (id)initWithName:(NSString *)name
    {
    if( (self = [super init]) != nil )
    {
    self.name = name;
    }
    return self;
    }

  • (NSString *)description
    {
    return [NSString stringWithFormat:@"姓名:%@\t性别:%@\n年龄:%d", _name, _sex, _age];
    }

/////////////////////////////////

#import
#import "Person.h"

int main(int argc, const char * argv[])
{

Person *per1 = [[Person alloc] initWithName:@"张三"];
Person *per2 = [[Person alloc] initWithName:@"张三"];
Person *per3 = [[Person alloc] initWithName:@"张三"];

per1.sex = @"男";
per1.age = 230;

NSLog(@"%@", per2);     //输出正常
NSMutableArray *array = [NSMutableArray arrayWithObjects:per1,per2, per3, nil];
NSLog(@"%@", array);        //输出不正常

return 0;

}

求大神解救!!!

3个回答

linshaolie
linshaolie   2014.08.28 16:48

输出结果:

2014-08-28 16:28:57.384 NSLogTest[1676:303] 姓名:张三 性别:(null)
年龄:0
2014-08-28 16:28:57.397 NSLogTest1676:303\n\U5e74\U9f84\Uff1a0",
"\U59d3\U540d\Uff1a\U5f20\U4e09\t\U6027\U522b\Uff1a(null)\n\U5e74\U9f84\Uff1a0"
)
Program ended with exit code: 0

lihaixyz
lihaixyz   2015.07.31 09:13

把array转成nsstring试试看

testcs_dn
testcs_dn   Rxr 2015.01.23 10:28

Product->Edit Schema->info->Debugger把LLDB修改成GDB就可以了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!