У меня проблема с декодированием URL-адреса, полученного из приложения для iOS; URL этого типа:
percorsoWithOption.php? Partenza = Via% 20Gaspare% 20Balbi% 202-8&arrivo = Via% 20Conca% 20d’Oro&язык = it_IT&широта = 41.717835&долгота = 12.311369&endLatitude = 41.679623&endLongitude = 12.484474&= 1 JSON
и когда я пытаюсь расшифровать его в следующем:
Интернет декодер
это декодируется просто отлично.
Еще когда я подаю заявку:
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");
журналы сообщают о значениях почти без изменений:
[Вт дек 01 12: 25: 22.566615 2015] [: ошибка] [pid 20812] [клиент
82.61.145.186:37526] * inizio ** вылет = Via Gaspare Balbi 2 \ xe2 \ x80 \ x938, прибытие = Via Conca d’Oro, широта = 41.717835,
долгота = 12,311369 [вт дек 01 12: 25: 22,569876 2015] [: ошибка] [pid 20812] [клиент 82.61.145.186:37526] *** отправление = Via Gaspare Balbi
2 \ xe2 \ x80 \ x938, прибытие = Виа Конка д’Оро, широта = 41,717835,
долгота = 12.311369
в основном 2 \ xe2 \ x80 \ x938 остается нетронутым.
Это не «почти без изменений», это просто декодирование URL. Единственная проблема заключается в том, что ан тире отображается как «\ 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 могут возникнуть проблемы с символом ‘-‘
Ты можешь использовать rawurldecode функция.