2013-07-03 39 views
1

我從foursquare api獲取位置數據,然後將此數據傳遞給webservice以插入database通過JSON傳遞西班牙語數據

現在例如當我得到位置數據墨西哥城市則有一些特殊字符在這其中給出以下錯誤: -

Unrecognized escape sequence. (13443): 

現在我使用JSON解析以下編碼: -

NSString *requestString = [jsonstring UTF8String]; 

如何可以解析特殊字符(西班牙數據),例如西班牙語JSON

任何解決方案?

謝謝。

+0

發送/使用正確編碼的JSON(UTF-8?)。 – Paul

+0

@Paul你能指定上述字符串需要哪種類型的編碼嗎? – AtWork

回答

1

我之前在json中也遇到了同樣的問題。我用下面的代碼解決了這個特殊字符問題: -

+(NSString *)http_post_method_changed:(NSString *)url content:(NSString *)jsonContent 
{ 
NSURL *theURL = [NSURL URLWithString:url]; 
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20.0f]; 
NSData *requestData = [jsonContent dataUsingEncoding:NSUTF8StringEncoding]; 
[theRequest setHTTPMethod:@"POST"]; 
[theRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[theRequest setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; 
[theRequest setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; 
[theRequest setHTTPBody: requestData]; 
NSURLResponse *theResponse = NULL; 
NSError *theError = NULL; 
NSData *theResponseData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&theError]; 
NSString *data=[[NSString alloc]initWithData:theResponseData encoding:NSUTF8StringEncoding]; 
NSLog(@"url to send request= %@",url); 
NSLog(@"response1111:-%@",data); 
return data; 
} 

通過你的網址和JSON發送,它會爲你提供所需的響應。

+0

我不認爲同步請求是可取的。這將阻止用戶界面。 – Mundi

+0

您可以輕鬆地在後臺發送它,然後它不會阻止用戶界面。 – 2013-07-03 12:54:55

+0

非常感謝..這是有幫助的。 – AtWork

0

你用這個嗎?

NSArray *dataArray = 
    [NSJSONSerialization JSONObjectWithData:_data 
            options:NSJSONReadingAllowFragments 
            error:&error]; 

確保(通過諮詢forsquare API文檔),進料確實是UTF-8 - 那麼上面應該沒有錯誤工作。

這假設API訂閱源向您發送數組,否則請使用NSDictionary