与 String removingPercentEncoding 不一致的行为:

Inconsistent behavior with String removingPercentEncoding:

我发现 Swift 3 的开源版本与 Xcode 8 使用 String 实例方法 removingPercentEncoding:[=17= 附带的版本相比存在不一致的行为]

let testString = "valid àæ"
let escapedString = testString.removingPercentEncoding

在Xcode中,escapedString的结果是"valid àæ"。不过开源版Swiftreturns"valid à"(缺少æ)。

Try it online.

我错过了什么?

这是由于 CFStringGetLength 会 return 一个错误的非拉丁字符值。 _CFStringCreateByAddingPercentEncodingWithAllowedCharacters_CFStringCreateByRemovingPercentEncoding 现已修复。

SR-3052

Foundation PR #706