我有一个包含TextFields的ViewController,我需要将这些值发送到一个专用的HTTP服务。我主要关心的是编码类型,因为这个应用程序是法语的,可能包含一些重音符号('é','è',等等,...),但我还需要正确地格式化我的字段,因为它可能包含空格,以及...
我尝试使用不同的方法,但我仍然有一个错误的编码在服务器端。
下面是我代码的一个示例:
let url_to_request = "http://11.22.33.44:8080/SRV/addRepertoire"
var params = "owner=\(User.sharedInstance.email)&adresse=\(adresse.text!)&nom=\(nom.text!)&telephone=\(telephone.text!)&commentaires=\(commentaires.text!)"
//trying to encode in ISO-8859-1
let dt = NSString(CString: params, encoding: NSISOLatin1StringEncoding)
//preparing string to be used in a NSURL
let final_url = dt!.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
print("URL loadRepertoire: \(url_to_request+"?"+final_url!)")
例如,字段“nom”包含编码为“b%C4%82%C5%A0b%C4%82%C5%A0”的“bébé”,而我的服务器需要的是“b%E9b%E9”
编辑2:
我尝试使用以下代码:
let url_to_request = "http://11.22.33.44:8080/SRV/addRepertoire"
let params = "owner=\(User.sharedInstance.email)&adresse=\(adresse.text!)&nom=\(nom.text!)&telephone=\(telephone.text!)&commentaires=\(commentaires.text!)"
let tmp_url = url_to_request + "?" + params
let final_url = tmp_url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
print("URL addRepertoire: \(final_url)")
但结果仍然是:
b%C3%83%C2%A9b%C3%83%C2%A9, diplayed bébé instead of bébé
3条答案
按热度按时间c8ib6hqw1#
stringByAddingPercentEncodingWithAllowedCharacters
总是使用UTF-8表示,所以恐怕您需要自己完成。r3i60tvu2#
下面是Swift 4中的一个解决方案:
用法:
eh57zj3b3#
对于Objective-C: