在我的程序中,我允许用户在文本字段中输入一些单词。然后我的程序将使用这些单词形成一个html字符串。然后该字符串将在NSURL中使用,因此我可以连接到该网站。
此方法适用于英语单词。但是当我在那里输入一些中文(或韩文)时,我就不行了。因此,我认为我需要在将输入数据传递给NSURL之前对其进行转换。但是我找不到办法做到这一点。 以下是我的代码的示例。
NSString *searchedString = theSearchBar.text;
NSString *urlToBeSearched = [[NSString alloc]
initWithFormat:@"http://www.awebsite.com/search/%@",
searchedString];
NSURLRequest *urlRequest = [[NSURLRequest alloc]
initWithURL:[NSURL URLWithString:urlToBeSearched]
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:50];
NSURLConnection *tempCon =[[NSURLConnection alloc] initWithRequest:urlRequest
delegate:self];
然后当然会在以后发布它们。
例如,当searchString =你好时,urlLink将为http://www.awebsite.com/search/你好。 NSURLConnection不喜欢这样,会给我“Bad Url”错误。 但是,如果urlLink为“%E4%BD%A0%E5%A5%BD”,它将为我提供正确的链接。
答案 0 :(得分:2)
URI中允许的字符集几乎限于US-ASCII的子集(请参阅RFC2396)。这意味着您的中文字符必须在URI中进行百分比转义。 NSURL +URLWithString:的文档说字符串必须符合RFC,因此您需要在调用该方法之前转义字符串百分比。
幸运的是,NSString有一个允许你执行名为-stringByAddingPercentEscapesUsingEncoding:的方法。您仍然需要选择合适的编码,您选择的编码取决于服务器如何解码URL字符串。最简单的选择可能是在两端都使用UTF-8。您需要执行以下操作:
NSString* searchedString = [theSearchBar.text stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSString* urlToBeSearched = [NSString stringWithFormat:@"http://www.awebsite.com/search/%@", searchedString];
// everything else the same, except you don't need to release urlToBeSearched
答案 1 :(得分:0)
您是否尝试对搜索字符串进行编码?
[NSString stringByAddingPercentEscapesUsingEncoding:/encoding-of-choice/];
不确定您将使用哪种编码用于中文字符。