Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding不适用于UITextView_Php_Ios_Objective C_Utf 8_Uitextview - Fatal编程技术网

Php stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding不适用于UITextView

Php stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding不适用于UITextView,php,ios,objective-c,utf-8,uitextview,Php,Ios,Objective C,Utf 8,Uitextview,我有一个搜索字段,它是一个UITextView,用户在其中输入将在服务器的MySQL数据库中搜索的数据 Xcode调用的搜索和PHP适用于普通字符,但我正在进行的编码似乎不适用于特殊字符,例如ā。我已经设法将带有特殊字符的数据保存到MySQL数据库中,但由于某些原因,我正在搜索的代码似乎没有正确编码数据 我目前的代码是: NSString *searchString; searchString = [searchTextField.text stringByAddingPercentEscape

我有一个搜索字段,它是一个
UITextView
,用户在其中输入将在服务器的MySQL数据库中搜索的数据

Xcode调用的搜索和PHP适用于普通字符,但我正在进行的编码似乎不适用于特殊字符,例如ā。我已经设法将带有特殊字符的数据保存到MySQL数据库中,但由于某些原因,我正在搜索的代码似乎没有正确编码数据

我目前的代码是:

NSString *searchString;
searchString = [searchTextField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
searchString = [searchString stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
searchTextField.text
是一个
UITextView
。你知道为什么这不起作用吗

好的,我已经解决了这个问题,但我不明白为什么。因此,我将感谢您的解释

我解决这个问题的方法是保存我在SQLite数据库中搜索的字符串,顺便说一句,这就像用锤子敲开螺母一样。保存后,将其分配给searchString,并对其进行正确编码


有人能解释一下为什么会出现这种情况吗?

这个搜索字符串是您刚刚添加到您正在手动构建的某个HTTP请求中的吗?如果是这种情况,是的,您必须转义它,这样web服务器才能正确解析
x-www-form-urlencoded
请求。不幸的是,
stringbyaddingpercentescapesusingencode
是不够的,让一些关键字符无法转义。但在我们深入讨论之前,请确认您是如何使用这个
searchString
的,以及您是如何构建请求的(以及您的web服务是如何接受这个请求并查询数据库的)。坦率地说,我们也不清楚“解决方案”是什么,以及它对搜索字符串的使用与直接使用字符串的不同之处。也许你可以分享这一点来说明(a)不起作用的原始代码;(b)修复(即使不太理想)。@Rob谢谢你的提问。我很可能没有充分解释我想做什么。UITextView被“发送”,据说是在URL字符串中编码的。因此,如果搜索字符串不包含任何特殊字符,URL将起作用:即,将返回匹配字符串的列表。但是,如果字符串包含特殊字符,并且我对其进行了上述编码,那么它将无法工作。如果我将搜索字符串“保存”到手机上的sqlite数据库中,然后通过SELECT语句将其分配给NSString,然后进行上述编码,搜索就会工作。理解,但问题可能是如何创建请求或如何创建查询。我们需要更多的信息来回答你的问题。但是,至少,如果您要进行百分比转义,那么您这样做的唯一原因是您正在手动构建请求(而不是使用AFNetworking之类的东西,它会为您解决这个问题),您不能只使用
stringByAddingPercentEscapesUsingEncoding
,而是使用类似的东西。但对于更广泛的问题,我们需要一个新的解决方案。