快速发布请求编码加号成为空白区域

最近我发现当我发送包含“+”符号的post数据时,“+”将变成空格。 例如{dish_name:fish + chips}。 这导致服务器端无法读取数据。 所以我试着跟随,我用:

request.setValue(“application / json; charset = utf-8”,forHTTPHeaderField:“Content-Type”)

将我的请求编码为UTF-8。但是,此行导致我的post数据变空。 我不知道为什么会这样。 或者是否有更好的解决方案在post方法中保持“+”符号为自己?

func PostMethod(url:NSURL,Data:String) { let request = NSMutableURLRequest(URL: url) let session = NSURLSession.sharedSession() let submitContent = Data request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") request.HTTPMethod = "POST" request.HTTPBody = submitContent.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) //print("——request——") //print(request) let task = session.dataTaskWithRequest(request){ data, response, error in if data != nil{ let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) as! String print(responseString) let jsonall = self.commonControl.StringToJson(responseString) if let dataFromString = jsonall["body"].stringValue.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) { let json = JSON(data: dataFromString) }}}} 

您可以尝试将您的+转换为ASCII码。 例如:

let content = exampleString.stringByReplacingOccurrencesOfString("+", withString: "%2B", options: [], range: nil)

Swift 3+

let content = exampleString.replacingOccurrences(of: "+", with: "%2B")