首页 > 解决方案 > + 符号在 iOS 中转换为空格 如何避免?

问题描述

我需要将字符串保存在服务器中作为用户输入。

即ABCD[]{}#%^*+=

服务器日志 = "密码":"[]{}#%^* = " (+ 符号替换为空格)

我的代码

// 创建可变请求

NSString *strHeaderField_ApplicationJson   = @"application/json";

NSString *strParameter   = @"userId=test@gmail.com&password=[]{}#%^*+=**";

NSData *parameterData = [strParameter dataUsingEncoding:NSASCIIStringEncoding
                                       allowLossyConversion:YES];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlEdit cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:timeInterval];

    [request addValue:strHeaderField_ApplicationJson forHTTPHeaderField:@"Contect-Type"];
    [request addValue:strHeaderField_ApplicationJson forHTTPHeaderField:@"Accept"];
    [request setHTTPMethod:HTTPMethodPost];
    [request setHTTPBody:parameterData];```



NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];

NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable connectionError) {

    [[Singleton sharedManager] hideHUD];

    if (data.length > 0) {
        NSError *error;

        NSDictionary *responceDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

        if (error) {
            [[Singleton sharedManager] showAlertTitle:MsgTitleError withMessage:MsgErrorOccured onView:self];
        }
        else {
            NSLog(@"responceDict : %@",responceDict);
            if ([responceDict valueForKey:@"status"]) {
                BOOL status = [[responceDict valueForKey:@"status"] boolValue];
                if (status) {
                    dispatch_async(dispatch_get_main_queue(), ^{
                        for (UIViewController *vc in self.navigationController.viewControllers) {
                            if ([vc isKindOfClass:[MyVehicleViewController class]]) {
                                [self.navigationController popToViewController:vc animated:true];
                                break;
                            }
                        }
                        [self.navigationController popViewControllerAnimated:true];
                    });
                }
                else {
                    [[Singleton sharedManager] showAlertTitle:MsgTitleError withMessage:[responceDict valueForKey:@"message"] onView:self];
                }
            }
            else {
                [[Singleton sharedManager] showAlertTitle:MsgTitleError withMessage:[responceDict valueForKey:@"message"] onView:self];
            }
        }
    }
    else {
        [[Singleton sharedManager] showAlertTitle:MsgTitleError withMessage:MsgConnectionErrorOccured onView:self];
    }
    [[Singleton sharedManager] hideHUD];
}];

[postDataTask resume];

标签: ios

解决方案


 NSString *password = @"34^+=-";

 NSCharacterSet *set = [[NSCharacterSet characterSetWithCharactersInString: @"!*'();:@&=+$,/?%#[] "] invertedSet];
 NSString *encodedPassword = [password stringByAddingPercentEncodingWithAllowedCharacters: set];
 NSData *parameterData = [encodedPassword dataUsingEncoding: NSASCIIStringEncoding allowLossyConversion: YES];

推荐阅读