2017-01-12 9 views
0

Я работаю над проектом, который интегрирован с поставщиком платежей (epdq). Они передают переменные успешной оплаты обратно в строке запроса на наш веб-сайт. Часть возвращаемого запроса включает имя клиента. Мы заметили, что если кто-то вводит специальный символ, например «£», параметры запроса повторяются так: CN = Mr +% A3Test + TestUrlDecode и символы ASCII в C#

Это довольно странно, потому что я думал, что значение UrlEncoded для символа £ % C2% А3.

Независимо от того, что это вызывает проблемы, поскольку мы должны декодировать значения, переданные обратно в querystring, и получить их истинное значение, в данном случае символ £.

Я пробовал два разных способа сделать это:

  foreach (var key in querystring.Keys) 
     { 
      var enc = System.Text.Encoding.GetEncoding("iso-8859-1"); 
      Logger.Debug(HttpUtility.ParseQueryString(querystring.ToString(), enc)[key.ToString()]); 
      Logger.Debug(HttpUtility.UrlDecode(querystring.Get(key.ToString()), enc)); 
     } 

Я пробовал как с ISO-8859-1 и UTF-8. Оба, однако, преобразуют строку в «Mr Test Test», очевидно, символ, который он не смог правильно преобразовать.

За исключением использования регулярного выражения и поиска строки для целого множества возможных символов, которые пользователь мог ввести, а затем преобразовать их из их эквивалента ASCII (примечание в ASCII% A3 является символом £), я не знаю, где еще пойти с этим.

Может ли кто-нибудь указать какие-либо указатели?

Спасибо за ваше время заранее

dotdev

ответ

0

Попробуйте эту кодировку: Encoding.GetEncoding ("1252");

+0

Спасибо за ответ - к сожалению, похоже, что нет никаких шансов - он все еще не преобразован в символ, который он распознает ... – dotdev

+0

Каков результат, который вы получили, когда вы пробовали эту кодировку? –

+0

То же, что и раньше, - неузнаваемый персонаж ui.e. ? в треугольнике .... – dotdev