将&符转换为utf 8

时间:2015-12-29 21:04:45

标签: ios swift encoding

我将包含数据的帖子请求发送到我的服务器:

var syncData = "data=Hello&World"
let urlRequest = NSMutableURLRequest(URL: NSURL(string: url)!, cachePolicy:  NSURLRequestCachePolicy.ReloadIgnoringCacheData, timeoutInterval: NSTimeInterval(60))

urlRequest.HTTPMethod = "POST"
urlRequest.HTTPBody = syncData.dataUsingEncoding(NSUTF8StringEncoding)

但服务器无法解码&(ampersand)字符的问题。在服务器上,我只得到#34; Hello"。这不是服务器问题。因为我试图用java和python和curl发送这个字符串 一切都很好。

我试过这个: NSXMLParser problem with "&"(Ampersand) character

但它没有帮助...任何想法?

2 个答案:

答案 0 :(得分:1)

正如穆萨所说。解决方案将是:

let customAllowedSet =  NSCharacterSet(charactersInString:"=\"#%/<>?@\\^`{|}&").invertedSet
    syncData = syncData.stringByAddingPercentEncodingWithAllowedCharacters(customAllowedSet)!

    urlRequest.HTTPBody = syncData.dataUsingEncoding(NSUTF8StringEncoding)

答案 1 :(得分:0)

var sync = syncData.stringByReplacingOccurrencesOfString("&", withString: " ")
urlRequest.HTTPBody = sync.dataUsingEncoding(NSUTF8StringEncoding)

将sync变量放在syncData变量下,并使用新的同步变量将urlRequest替换为上面的那个