通过HTTP Post传递特殊字符

时间:2014-05-17 11:07:29

标签: ios asihttprequest

我正在尝试传递特殊字符,但它不起作用。我已经指定了UTF8String字符串。我正在尝试传递“åøæ”,它的打印效果类似于“$ @ \ U20ac \ U00a3 \ U00a5”。

     NSMutableDictionary* reqDict = [NSMutableDictionary dictionary];
    [reqDict setObject:Userid forKey:@"user_id"];
    [reqDict setObject:Comm_id forKey:@"comm_id"];
    [reqDict setObject:Post_id forKey:@"post_id"];
    [reqDict setObject:Comment_type forKey:@"comment_type"];
    [reqDict setObject:Comment forKey:@"comment"];
    //[reqDict setObject:@"å ø æ" forKey:@"comment"];

    NSLog(@"Comment:%@",reqDict);
    NSString* reqString = [NSString stringWithString:[reqDict JSONRepresentation]];

    //Request
    NSData* requestData = [NSData dataWithBytes:[reqString UTF8String] length:[reqString length]];
   // NSLog(@"requestData:%@",requestData);
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:tiComment_url]];

    [request setRequestMethod:@"POST"];
    [request addRequestHeader:@"User-Agent" value:@"ASIHTTPRequest"];
    [request addRequestHeader:@"Content-Length" value:[NSString stringWithFormat:@"%d", [requestData length]]];

    [request addRequestHeader:@"Content-Type" value:@"application/json"];
    request.defaultResponseEncoding = NSUTF8StringEncoding;
    [request appendPostData:requestData];
    [request setTimeOutSeconds:60];
    [request setDelegate:self];
    [request startSynchronous];

1 个答案:

答案 0 :(得分:0)

NSLog将以转义形式打印扩展字符。字符串中的字符仍然(大概)是正确的。 (请记住,NSLog不是用于“生产”,只是用于调试,并且许多调试环境在显示扩展字符时会遇到问题。)