我在解码从iOS应用收到的网址时遇到了问题;网址是那种:
percorsoWithOption.php partenza =通过%20Gaspare%20Balbi%202-8&安培; arrivo =通过%20Conca%20d'Oro&安培;语言= it_IT&安培;纬度= 41.717835&安培;经度= 12.311369&安培; endLatitude = 41.679623&安培; endLongitude = 12.484474&安培; JSON = 1
当我尝试在下面解码时: Online decoder 它解码得很好。 然而,当我申请时:
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] [:error] [pid 20812] [客户 82.61.145.186:37526] * inizio **出发= Via Gaspare Balbi 2 \ xe2 \ x80 \ x938,抵达= Via Conca d'Oro,纬度= 41.717835, 经度= 12.311369 [Tue Dec 01 12:25:22.569876 2015] [:错误] [pid 20812] [客户82.61.145.186:37526] ***出发= Via Gaspare Balbi 2 \ xe2 \ x80 \ x938,到达= Via Conca d'Oro,纬度= 41.717835, 经度= 12.311369 基本上2 \ xe2 \ x80 \ x938保持不变。
答案 0 :(得分:0)
它没有"几乎没有变化"它的URL解码就好了。唯一的问题是 en dash 显示为" \ xe2 \ x80 \ x93"在你的日志中。
bin2hex()
,看看它是否显示为e28093
(只是 - 字符)或5c78...
(字面意思" \ x ...&# 34。)%E2%80%93
进行URL编码,而不是原始字符。在客户端修复此问题。答案 1 :(得分:0)
我最终使用了:
-(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 :(得分:-1)
您可以使用rawurldecode功能。