Ios Swift 4中';的编码输出百分比不正确;(撇号)

Ios Swift 4中';的编码输出百分比不正确;(撇号),ios,swift,urlencode,Ios,Swift,Urlencode,我正在对字符串进行编码以命中web服务。我正在使用addingPercentEncoding(带AllowedCharacters:CharacterSet)对字符串进行编码 除了'(撇号)字符被编码为%E2%80%99而不是%27,其他一切正常 if let _keyword = keyword? .addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { parameters?[&

我正在对字符串进行编码以命中web服务。我正在使用addingPercentEncoding(带AllowedCharacters:CharacterSet)对字符串进行编码

除了'(撇号)字符被编码为%E2%80%99而不是%27,其他一切正常

    if let _keyword = keyword?
        .addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
        parameters?["keyword"] = _keyword
    }
例如:

当关键字是Maggie的时,输出=“Maggie%E2%80%99s”而不是“Maggie%27s”

输出对于其他人来说是好的,当关键字为Jelly Extracts时,输出为“Jelly%20Extracts”

那么,如何将'(撇号)正确编码为%27


编辑:当我传递静态文本时,如“Maggie's.addingPercentEncoding(带允许字符:.urlQueryLowed)”输出是正确的,但当我将其包装在变量中时,输出不正确。

而不是
urlQueryLowed
使用
字母数字法

let originalString = "Maggie's"
let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .alphanumerics)
print(escapedString) // Optional("Maggie%27s")

不要使用
urlQueryAllowed
而使用
alphanumerics

let originalString = "Maggie's"
let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .alphanumerics)
print(escapedString) // Optional("Maggie%27s")

撇号(')是疑问句中的一个法定字符。它不需要也不会被编码。对于任何因为撇号编码无法按预期工作而遇到此问题的人,您可能遇到了智能标点问题。智能标点符号用撇号(')替换符号backtick('),撇号是两个不同的字符。撇号(')编码为%E2%80%99,而符号backtick编码为%27。您可以通过
smartquoteType
方法关闭每个文本字段的智能标点符号。撇号(')是查询中的法定字符。它不需要也不会被编码。对于任何因为撇号编码无法按预期工作而遇到此问题的人,您可能遇到了智能标点问题。智能标点符号用撇号(')替换符号backtick('),撇号是两个不同的字符。撇号(')编码为%E2%80%99,而符号backtick编码为%27。您可以通过
smartQuotesType
方法关闭每个文本字段的智能标点。这不起作用。我在操场上查看它。
let data=keyword!。addingPercentEncoding(带AllowedCharacters:.alphanumerics)let test=“Uday's”。addingPercentEncoding(带AllowedCharacters:.alphanumerics)
在通过静态测试时工作正常,但在变量中通过时失败我将关键字设置为
let关键字:字符串?=“Uday’s”
而且它运行良好。这不起作用。我在操场上查看它。
let data=keyword!。addingPercentEncoding(带AllowedCharacters:.alphanumerics)let test=“Uday's”。addingPercentEncoding(带AllowedCharacters:.alphanumerics)
在通过静态测试时工作正常,但在变量中通过时失败我将关键字设置为
let关键字:字符串?=“Uday’s”
,它运行良好。