我正在向服务器发送数据,一切正常,但是如果有一个加号,它会被转换为空格。 (注意有一个完整的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];