玩Swift我遇到了一些我不理解的东西。
以下代码不仅取代了预期的/%
字符,还取代了ä
字符:
immport Foundation
extension String{
func encode() -> String{
let customAllowedSet = NSCharacterSet(charactersInString:"/%").invertedSet
return self.stringByAddingPercentEncodingWithAllowedCharacters(customAllowedSet)!
}
}
let testStr = "Ein String der % und / enthält"
// contains what is expected
let percentEncodedStr = testStr.encode()
// contains "Ein String der %25 und %2F enth%C3%A4lt"
let decodedStr = percentEncodedStr.stringByRemovingPercentEncoding
// contains what was in testStr originally
为什么ä
被%C3%A4
取代?
答案 0 :(得分:0)
该方法用于编码URL的组件或子组件。 URL中不允许使用非ASCII字符。它们总是被编码。
docs for stringByAddingPercentEncodingWithAllowedCharacters()
说:
忽略7位ASCII范围之外的
allowedCharacters
中的任何字符。
也就是说,没有非ASCII字符被认为是“允许的”。