此问题已在此处有答案:
Non-latin characters Alamofire 4.0 .GET Request(1个答案)
22小时前关门了。
我想从我的应用程序打开苹果Map使用URL方案。
let url = URL(string: "http://maps.apple.com/?q=대한민국")
使用这个URL进行测试,但它总是为nil。
这是我猜测。
- URL必须只包含英语,数字和一些字符。
- url方案无法使用URL初始化。
1.我的项目上有事情要做
有没有人知道这件事或如何解决这个问题?
3条答案
按热度按时间s3fp2yjn1#
这里的各种答案中的编码都是正确的,但通常不应该在整个URL上使用
.addingPercentEncoding
。正如参数urlQueryAllowed
所指出的,这种编码只适用于查询部分,而不适用于其他部分,如路径、主机或权限。对于硬编码的URL,您可以手动编码,但如果您以编程方式构建URL,则应该使用URLComponents:
这确保了每个片段都被正确编码,并避免了在以编程方式构建URL时混乱的字符串插值。
作为
addingPercentEncoding
出错的一个例子,考虑一个IDN域,如Bücher。例如:这是不正确的。IDN域名必须使用Punycode编码,而不是percent-encoding。
qyswt5oh2#
您必须对路径进行编码,因为它包含URL中不允许的字符:
输出:
pbossiut3#
URL最初仅定义为ASCII。
w3.org
当你试图将一个包含非ascii字符的字符串转换为URL时,由于上述原因,它不能这样做。您需要以某种方式将其编码为%xx(UTF-8的十六进制值)格式。
由于非ascii字符在查询字符串中,因此您可以在Swift中使用以下代码执行此操作: