0

我正在尝试编码一个字符串(通过 HTTP 发布请求发送)以接受可以在 iPhone 上输入的所有字符。

以下适用于我在典型英文桌面键盘上尝试的任何字符

let userPassword = "password1"
let encodedPassword = userPassword.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.alphanumericCharacterSet())

但不能识别重音字符,如 á、é、í、ó、ú、ü、ñ 等(在标准 iPhone 键盘上按住 a、e、i... 即可访问这些字符)。是否有一个NSCharacterSet或简单的扩展程序可以包含标准 iPhone 键盘上的任何/所有字符?

编辑:这是我提出的请求的代码

let username = "joe"
let password = "pássword"
let encodedUsername = username.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.alphanumericCharacterSet())
let encodedPassword = password.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.alphanumericCharacterSet())

let request = NSMutableURLRequest(URL: NSURL(string: "https://www.url.com")!)
request.HTTPMethod = "POST"
let postString = "id="+encodedUsername+"&pw="+encodedPassword
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in
    ...
4

1 回答 1

0

只需在接受用户输入时添加它,这样用户就没有机会添加任何特殊符号或重音字符,并且您不必使用允许的字符进行编码:-

#define ACCEPTABLE_CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
         NSCharacterSet *acceptedInput = [NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS];
        if (![[string componentsSeparatedByCharactersInSet:acceptedInput] count] > 1){
            NSLog(@"not allowed");
            return NO;
        }
        else{
            return YES;
        }
}
于 2016-01-29T08:47:44.173 回答