iOS:解码utf8字符串

时间:2012-03-15 07:21:34

标签: ios json unicode character-encoding internationalization

我从服务器收到一个json数据,里面有一些字符串。我使用SBJson https://github.com/stig/json-framework来获取它们。

然而,当我在UILabel输出一些字符串时,它们看起来像这样:\u0418\u043b\u044c\u044f\u0411\u043b\u043e\u0445(那是西里尔符号)

拉丁字符没问题

如何将其解码为普通符号?

有关获取数据的一些代码:

   NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];   
   NSString *stringData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
   NSDictionary *object = [parser objectWithString:stringData error:nil];
   NSString *comments = [NSString stringWithFormat:@"%@",[object valueForKey:@"comments"]];

String comments 有一个非常特殊的格式,所以我正在做一些像stringByTrimmingCharactersInSet

这样的操作

stringByReplacingOccurrencesOfString

NSArray* json_fields = [comments_modified componentsSeparatedByString: @";"];

获取最终数据。

这是一些修剪/替换后的接收数据示例(NSString* comments):

"already_wow"=0;"date_created"="2012/03/1411:11:18";id=41598;name="\U0418\U043b\U044c\U044f\U0411\U043b\U043e\U0445";text="\U0438\U043d\U0442\U0435\U0440\U0435\U0441\U043d\U043e";"user_id"=1107;"user_image"="user_image/a6/6f/96/21/20111220234109510840_1107.jpg";"user_is_deleted"=0;username=IlyaBlokh;"wow_count"=0;

您会看到字段textname已编码

如果我在视图上显示它们(例如在UILabel),它们看起来仍然相同

1 个答案:

答案 0 :(得分:0)

可能返回的字符串只是unicode字符串表示(ascii字符串),这意味着没有返回用utf8编码的内容,尝试使用NSASCIIStringEncoding来获取stringData