我是iOS开发的新手。我解析了一个JSON Data From URL,如:
http://www.janvajevu.com/webservice/specific_post.php?post_id=2885
我从中解析了一个JSON数据,如:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.webSpinner startAnimating];
NSURL * url=[NSURL URLWithString:[NSString stringWithFormat:@"http://www.janvajevu.com/webservice/specific_post.php?post_id=2885"]];
dispatch_async(kBgQueue, ^{
data = [NSData dataWithContentsOfURL: url];
[self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
});
}
-(void)fetchedData:(NSData *)responsedata
{
if (responsedata.length > 0)
{
NSError* error;
self.webDictionary= [NSJSONSerialization JSONObjectWithData:responsedata options:kNilOptions error:&error];
self.webArray=[_webDictionary objectForKey:@"data"];
}
self.headingString=[self.webArray valueForKey:@"post_title"];
NSLog(@"Web String %@",self.headingString);
[self.webSpinner stopAnimating];
self.webSpinner.hidesWhenStopped=TRUE;
NSString *headingString=[NSString stringWithFormat:@"%@",self.headingString];
NSCharacterSet *charsToTrim = [NSCharacterSet characterSetWithCharactersInString:@"() \n\""];
self.headLabel.text=[headingString stringByTrimmingCharactersInSet:charsToTrim];
}
然后我得到了一个回复,就像我得到标签文字一样:
"\U0aaa\U0abe\U0a97\U0ab2 \U0aae\U0abe\U0ab8\U0acd\U0aa4\U0ab0"
当我解析英文字母时,我的网址"author_name"
中包含英文字母,当我解析它时,它打印与JSON数据相同,但其他语言在这里意味着我的网址其他数据包含古吉拉特字母然后它被解析为解码或不解读古吉拉特语。
这里我没有在我的代码中编码我的URL然后它是如何以这种格式出现的?请给我解决方案。
答案 0 :(得分:1)
您需要将ASCII(Unicode Escaped)转换为Unicode(UTF-8)。
检查一下:http://www.rapidmonkey.com/unicodeconverter/reverse.jsp
在第一个文本框中输入您的\ U0aaa ...文本,然后点击转换即可获得您想要的内容。
现在你如何在Objective-C中做到这一点: 试试这个,让我知道你得到了什么。
NSData *data = [self dataUsingEncoding:[NSString defaultCStringEncoding]];
NSString *unicodeString = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];
self.headLabel.text = asciiString;
答案 1 :(得分:0)
试试这个
NSString *aDescription = self.webArray[0][@"post_title_slug"];
NSString *aTitle = [[aDescription stringByRemovingPercentEncoding] stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];