Хотя в большинстве случаев это работает нормально, теперь я стал Помните, что PHP urldecode обрабатывает знак + иначе, чем Swift addPercentEncoding, и декодирует + в пробел.
Как этого можно избежать?
Код: Выделить всё
// Swift
let data = "some+test"
let encodedData = data.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) // some+test
sendToMyServer(encodedData)
// PHP
$encodedData = $receivedData; // some+text
$decodedData = urldecode($encodedData); // some text
Код: Выделить всё
URLFragmentAllowedCharacterSet "#%[\]^`{|}
URLHostAllowedCharacterSet "#%/?@\^`{|}
URLPasswordAllowedCharacterSet "#%/:?@[\]^`{|}
URLPathAllowedCharacterSet "#%;?[\]^`{|}
URLQueryAllowedCharacterSet "#%[\]^`{|}
URLUserAllowedCharacterSet "#%/:?@[\]^`
Каков «правильный» способ решения этой проблемы? Я предполагаю, что мог бы просто определить собственный набор символов, включающий знак +, но я не уверен, может ли это привести к другим неожиданным побочным эффектам. Безопасно ли это или есть ли другие различия в URL-адресе PHP, которые необходимо учитывать?
Подробнее здесь: https://stackoverflow.com/questions/759 ... -urldecode
Мобильная версия