Другая неудачная практика может вызвать эту проблему, которая еще не указана.
См. этот фрагмент кода:
Все в порядке, верно?
Что делать, если «a_important_file.php»:
----------This is the end of the an_important_file-------------------
Это не сработает? Почему? Потому что уже создана новая строка.
Теперь, хотя это не общий сценарий, что, если вы используете структуру MVC, которая загружает большое количество файлов перед передачей данных на ваш контроллер? Это не необычный сценарий. Будьте готовы к этому.
Из PSR-2 2.2:
Unix LF (linefeed) line ending
. single blank line
. omitted
из файлов, содержащих only php
Поверьте, следующие стандарты могут сэкономить вам много часов из вашей жизни:)
Вы могли вручную заменить значение (argument.Replace(' ', '+')
) или консультироваться HttpRequest.ServerVariables["QUERY_STRING"]
(еще лучше HttpRequest. URL. Запрос) и синтаксический анализ это самостоятельно.
необходимо однако попытаться решить проблему, где URL дан; знак "плюс" должен быть закодирован как "%2B" в URL, потому что плюс иначе представляет пространство.
, Если бы Вы не управляете входящими URL, первая опция была бы предпочтена, поскольку Вы избегаете большинства ошибок этот путь.
System.Web.HttpUtility.UrlEncode(yourString)
добьется цели.
Ну, очевидно, у Вас должна быть строка Base64 URLEncoded прежде, чем отправить его на сервер.
, Если бы Вы не можете выполнить это, я предложил бы просто заменить любые встроенные пробелы назад к +; с тех пор b64 строки, как предполагается, не имеют пробелы, это - законная тактика...
Как быстрый взлом Вы могли заменить пространство плюс символ перед base64-декодированием.
Я ни в коем случае не разработчик C#, но похоже, что Вы должны к URL ЗАКОДИРОВАТЬ свою строку Base64 прежде, чем отправить его как URL.
Если Вы URLEncode строка прежде, чем добавить его к URL, у Вас не будет ни одной из тех проблем (автоматический URLDecode возвратит его исходному состоянию).
Предложенное решение:
Request.QueryString["VLTrap"].Replace(" ", "+");
Должен работать просто великолепно. Что касается Вашего беспокойства:
я имел, хотя из этого, но мое беспокойство с ним, и я должен был упомянуть это для запуска, то, что я не знаю то, что другие символы могли бы быть уродливыми в дополнение к знаку "плюс".
Это легко облегчить чтение о base64. Единственное не алфавитно-цифровые символы, которые законны в современном base64, "/", "+" и "=" (который только используется для дополнения).
Из тех, "+" единственный, который имеет особое значение как завершенное представление в URL. В то время как другие два имеют особое значение в URL (разделитель пути и разделитель строки запроса), они не должны создавать проблему.
, Таким образом, я думаю, что необходимо быть в порядке.
Вы не можете только предположить, что пространство +, и замените его?
Request.QueryString["VLTrap"].Replace(" ", "+");
;)