urldecode — PHP url декодирование не работает

У меня проблема с декодированием 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 остается нетронутым.

-1

Решение

Это не «почти без изменений», это просто декодирование URL. Единственная проблема заключается в том, что ан тире отображается как «\ xe2 \ x80 \ x93» в вашем журнале.

  1. Неясно, является ли это проблемой того, как значения регистрируются или просматриваются, или является ли значение на самом деле «\ XE2 \ x80 \ x93». Чтобы проверить это, используйте bin2hex() на вашей строке и посмотреть, будет ли он отображаться как e28093 (только символ -) или 5c78... (буквально «\ x …»).
  2. Эта черта должна быть отправлена ​​в кодировке URL как %E2%80%93 в URL, а не как необработанный символ. Исправьте это на клиенте.
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 могут возникнуть проблемы с символом ‘-‘

0

Ты можешь использовать rawurldecode функция.

-1
По вопросам рекламы [email protected]