PHP url解码不起作用
我在解码从iOS应用程序收到的url时遇到问题;该url属于以下类型: percorsoWithOption.php?partenza=Via%20Gaspare%20Balbi%202–8&arrivo=Via%20Conca%20d'Oro&language=it_it&latude=41.717835&longitude=12.311369&endlatudio=41.679623&endLongitude=12.484474&json=1 当我尝试在以下位置解码时: 它被解码得很好。 但当我申请时:PHP url解码不起作用,php,urldecode,Php,Urldecode,我在解码从iOS应用程序收到的url时遇到问题;该url属于以下类型: percorsoWithOption.php?partenza=Via%20Gaspare%20Balbi%202–8&arrivo=Via%20Conca%20d'Oro&language=it_it&latude=41.717835&longitude=12.311369&endlatudio=41.679623&endLongitude=12.484474&json=1 当我尝试在以下位置解码时: 它被解码得很好。 但
if (isset($_GET['arrivo'])) $arrivo=$_GET['arrivo'];
if (isset($_GET['partenza'])) $partenza=$_GET['partenza'];
error_log("*inizio**departure=$partenza, arrival=$arrivo, latitude=$latitude, longitude=$longitude");
if (isset($partenza)) $partenza=urldecode($partenza);
if (isset($arrivo)) $arrivo=urldecode($arrivo);
error_log("***departure=$partenza, arrival=$arrivo, latitude=$latitude, longitude=$longitude");
日志报告的值几乎没有变化:
[Tue Dec 01 12:25:22.566615 2015][错误][pid 20812][客户
82.61.145.186:37526]*出发=经加斯帕雷-巴尔比2\xe2\x80\x938,到达=经孔卡-多罗,纬度=41.717835,
经度=12.311369[周二12:01:25:22.569876 2015]
[:error][pid 20812][client 82.61.145.186:37526]***出发=通过加斯帕雷-巴尔比
2\xe2\x80\x938,到达=经孔卡德奥罗,纬度=41.717835,
经度=12.311369
基本上,2\xe2\x80\x938保持不变
您可以使用这个函数。它不是“几乎不变”,它只是URL解码而已。唯一的问题是,en破折号在日志中显示为“\xe2\x80\x93”
bin2hex()
,查看它是显示为e28093
(仅显示–字符)还是5c78…
(字面意思是“\x…”)%E2%80%93
的URL,而不是原始字符。在客户端上修复此问题-(NSString*)stripNonStandardAndEncode:(NSString*)origin{
NSMutableCharacterSet *charactersToKeep = [NSMutableCharacterSet alphanumericCharacterSet];
[charactersToKeep addCharactersInString:@" ,.'"];
NSCharacterSet *charactersToRemove = [charactersToKeep invertedSet];
NSString *trimmedReplacement = [[ origin componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@""];
return [trimmedReplacement stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
现在php可以无缝地处理它:url decode可能在字符“-”方面有一些问题不幸的是,2\xe2\x80\x938即使使用RawUrlDecode也保持不变。我使用simple:[start stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]在目标c中对字符串进行编码我还在网上尝试了一个字符串扩展,结果也一样。我不能告诉你如何在ObjC中正确地执行它,这需要另一个问题。我写的,这是很标准的。我可以建议你检查一下这是否仅仅是你的日志记录问题,或者您的值是否真的被奇怪地解码为
\x..
。我甚至尝试了:[通过添加PercentEncodingWithAllowedCharacters开始字符串:[NSCharacterSet URLHostAllowedCharacterSet]];使用相同的生成url。奇怪的是:你可以自己试着去解码它们。这暗示了php支持存在问题。