Как правильно закодировать строку в Swift для декодирования с использованием PHP urldecode?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как правильно закодировать строку в Swift для декодирования с использованием PHP urldecode?

Сообщение Anonymous »

Я хотел бы отправить некоторые данные в кодировке URL из приложения Swift в API PHP, где данные снова декодируются.
Хотя в большинстве случаев это работает нормально, теперь я стал Помните, что 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
Похоже, что Swift не учитывает знак + ни в одном из своих встроенных (инвертированных) наборов символов:

Код: Выделить всё

URLFragmentAllowedCharacterSet  "#%[\]^`{|}
URLHostAllowedCharacterSet      "#%/?@\^`{|}
URLPasswordAllowedCharacterSet  "#%/:?@[\]^`{|}
URLPathAllowedCharacterSet      "#%;?[\]^`{|}
URLQueryAllowedCharacterSet     "#%[\]^`{|}
URLUserAllowedCharacterSet      "#%/:?@[\]^`
Есть ли причина, по которой PHP обрабатывает знак + таким образом?
Каков «правильный» способ решения этой проблемы? Я предполагаю, что мог бы просто определить собственный набор символов, включающий знак +, но я не уверен, может ли это привести к другим неожиданным побочным эффектам. Безопасно ли это или есть ли другие различия в URL-адресе PHP, которые необходимо учитывать?

Подробнее здесь: https://stackoverflow.com/questions/759 ... -urldecode
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»