2017-01-12 6 views
0

저는 지불 공급자 (epdq)와 통합 된 프로젝트를 진행하고 있습니다. 그들은 성공적인 지불의 변수를 querystring에 다시 웹 사이트에 전달합니다. 전달 된 쿼리 문자열의 일부에는 고객 이름이 포함됩니다. 우리는 누군가가 '£'와 같은 특수 문자를 입력하면 쿼리 문자열 매개 변수가 다음과 같이 반환된다는 것을 알았습니다. CN = Mr + % A3Test + TestC#의 UrlDecode 및 ASCII 문자

£ 기호에 대한 UrlEncoded 값이 % C2 % A3.

질의 문자열에서 다시 전달 된 값을 디코딩해야하고 실제 값 (이 경우에는 £ 기호)을 가져야하므로 문제가됩니다. 나는 ISO-8859-1 및 UTF-8 모두를 시도했습니다

  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)); 
     } 

:

나는 그 일의 두 가지 방법을 시도했습니다. 그러나 둘 다 문자열을 'Mr Test Test'로 변환합니다. 분명히 제대로 변환 할 수 없었던 문자입니다.

일반 표현식을 사용하고 고객이 입력 할 수있는 가능한 모든 문자에 대해 문자열을 검색 한 다음 해당 문자를 ASCII로 변환하십시오 (ASCII % A3은 £ 기호 임). 이걸로 어디로 가야할지 모르겠다.

누구나 어떤 포인터를 제공 할 수 있습니까? 사전에 시간

감사

답변

0

이 인코딩을 시도 dotdev : Encoding.GetEncoding ("1252");

+0

답변을 주셔서 감사합니다. 불행히도 아무런 반응도 보이지 않습니다. 아직 인식되지 않은 문자로 변환되지 않습니다 ... – dotdev

+0

이 인코딩을 시도했을 때 얻은 결과는 무엇입니까? –

+0

이전과 동일 - 인식 할 수없는 문자 ui.e. ? 삼각형에 .... – dotdev