gpt4 book ai didi

iOS : How to do proper URL encoding?

转载 作者:IT王子 更新时间:2023-10-29 07:51:19 26 4
gpt4 key购买 nike

我无法在 UIWebView 中打开一个 URL,所以我搜索并发现我需要对 URL 进行编码,所以我尝试对其进行编码,但是我在 URL 编码中遇到了问题: 我的 URL 是 http://somedomain.com/data/Témp%20Page%20-%20Open.html(这不是真实的 URL)。

我担心 %20 我尝试使用 stringByReplacingOccuranceOfString:@""withString:@"" 替换它,它给了我我想要的 URL,比如 http://somedomain.com/data/Témp Page - Open.html 然而,它没有在 UIWebView 中打开,但令人惊讶的是它在 Safari 中打开 & FireFox 完美。即使我打开未编码的 URL,它也会自动转换并打开我正在寻找的页面。

我在谷歌上搜索了 URL 编码,它指出了我已经检查过的不同结果,但没有任何结果可以帮助我!!我在不同的 URL 编码问题中尝试了不同的函数答案,但它只是更改了所有特殊字符并使我的 URL 像 http%3A%2F%2Fsomedomain.com%2Fdata%2FT... 这不能在 UIWebView 甚至任何浏览器中打开。

它在 UIWebView delegate 中给出了以下 Error Log

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { }

Error Code : 101 & Description : Error Domain=WebKitErrorDomain Code=101 "The operation couldn’t be completed. (WebKitErrorDomain error 101.)" UserInfo=0x6e4cf60 {}

最佳答案

@Dhaval Vaishnani 提供的答案仅部分正确。此方法将 ?=& 字符视为不进行编码,因为它们在 URL 中有效。因此,要对任意字符串进行编码以安全地用作 URL 的一部分,您不能使用此方法。相反,您必须退回到使用 CoreFoundation 和 CFURLRef:

NSString *unsafeString = @"this &string= confuses ? the InTeRwEbZ";
CFStringRef safeString = CFURLCreateStringByAddingPercentEscapes (
NULL,
(CFStringRef)unsafeString,
NULL,
CFSTR("/%&=?$#+-~@<>|\\*,.()[]{}^!"),
kCFStringEncodingUTF8
);

不要忘记使用 CFRelease(safeString); 处理结果字符串的所有权。

此外,尽管有标题,OP 似乎正在寻找解码 而不是编码 字符串。 CFURLRef 有另一个类似的函数调用:

NSString *escapedString = @"%32%65BCDEFGH";
CFStringRef unescapedString = CFURLCreateStringByReplacingPercentEscapesUsingEncoding (
NULL,
(CFStringRef)escapedString,
CFSTR(""),
kCFStringEncodingUTF8
);

同样,不要忘记适当的内存管理。

关于iOS : How to do proper URL encoding?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12652396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com