带有元音变音的iOS HttpRequest的长度不正确

在iOS中,我正在构build一个http请求,如下所示:

NSURL* url = [ NSURL URLWithString:[ NSString stringWithFormat: @"%@%@", [ HPSWebService getBaseURL ], @"Sync/PushObject"] ]; // 'request' is defined within the base class and is set here to the class-specific server url request = [[NSMutableURLRequest alloc] initWithURL:url]; NSString* jsonRequest = [NSString stringWithFormat: @"{\"collection\":\"responses\",\"id\":\"%@\",\"objectjson\":%@}",response.id,response.json]; NSLog(@"HPSPushResponsesWebService jsonRequest = %@",jsonRequest); NSData *requestData = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]]; [request setHTTPMethod:@"POST"]; [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [request setValue:self.contentEncoding forHTTPHeaderField:@"Content-Type"]; [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; [request setHTTPBody: requestData]; 

NSLog输出如下:

HPSPushResponsesWebService jsonRequest = {“collection”:“responses”,“id”:“ZBZiaa43QciMSlMCp0Vtyw ==”,“objectjson”:{“_ id”:“{\ “$ binary”:“ZBZiaa43QciMSlMCp0Vtyw ==”,“$ type \”:\“03 \”}“,”_ user“:”Eddie Freshman“,”_ lastmodifieddatelocalutc“:”2012-10-23 14: 45:39“,”Fav Car“:[”Other:Me√'zoom“],”_ formid“:”{\“$ binary \”:\“OCDI9VNGStmN8GbOLSevtA == \”,\“$ type \ “03 \”}“,”后续需要?“:[],”_ contactid“:”{\“$ binary \”:\“+ 3144XhxQzCNzWKfqXCHyg == \”,\“$ type \”:\“03 \“}”}}

这一切都工作正常,直到JSON数据包含一个特殊的字符(如元音变音)。 当发生这种情况时,内容长度实际上比应该小1个字符。 在这个例子中,umlat(e)char已经被转换成了√(在Fav Carstring附近)

我应该如何编码,以便在http请求中正确设置内容长度?

谢谢