使用数据中的+符号转义POST主体将它们转换为空格

时间:2017-05-17 10:29:51

标签: xcode api urlencode

我正在向服务器发送数据,一切正常,但是如果有一个加号,它会被转换为空格。 (注意有一个完整的JSON字符串,但我刚刚复制了我试图编码的电话号码)

我使用;

编码数据
[result stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]

编码:“+44(0)7811 222 3335 55666”

产生:“+ 44%20(0)%207811%20222%203335%2055666”

当发送到服务器时,加号被替换为空格(因为它没有被转义)。

我的解决方法很讨厌

// URL Encode
result = [result stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

// Convert the plus sign ------ nasty
result = [result stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];

结果是; %2B44%20(0)%207811%20222%203335%2055666

解码;

NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

// Convert the plus sign ------ nasty
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"%2B" withString:@"+"];

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] options:0 error:nil];

0 个答案:

没有答案