Linux 与字符串removingPercentEncoding不一致的行为:

Linux 与字符串removingPercentEncoding不一致的行为:,linux,swift,swift3,ibm-swift-sandbox,Linux,Swift,Swift3,Ibm Swift Sandbox,与Xcode 8附带的字符串实例方法removingPercentEncoding的版本相比,我发现开源版本Swift 3的行为不一致: let testString = "valid àæ" let escapedString = testString.removingPercentEncoding 在Xcode中,转义字符串的结果是“有效”。然而,Swift的开源版本返回了“validá”(缺少æ) 我遗漏了什么?这是由于一个错误导致的,CFStringGetLength会为非拉丁字符返

与Xcode 8附带的字符串实例方法
removingPercentEncoding
的版本相比,我发现开源版本Swift 3的行为不一致:

let testString = "valid àæ"
let escapedString = testString.removingPercentEncoding
在Xcode中,
转义字符串
的结果是
“有效”
。然而,Swift的开源版本返回了
“validá”
(缺少
æ


我遗漏了什么?

这是由于一个错误导致的,
CFStringGetLength
会为非拉丁字符返回不正确的值
\u CFStringCreateByAddingPercentEncodingWithAllowedCharacters
\u CFStringCreateByRemovingPercentEncoding
现在已修复


这是由于一个错误造成的,
CFStringGetLength
会为非拉丁字符返回不正确的值
\u CFStringCreateByAddingPercentEncodingWithAllowedCharacters
\u CFStringCreateByRemovingPercentEncoding
现在已修复


值得注意的是,IBM Swift Sandbox运行的是Linux版本的Swift,这是与Xcode版本不同的实现。因此,它更有可能是“Linux vs.MacOS”而不是“Xcode vs.open source”。值得注意的是,IBM Swift Sandbox运行的是Linux版本的Swift,这与Xcode版本不同。因此,这更可能是“Linux vs.MacOS”的事情,而不是“Xcode vs.开源”的事情。