Sunday, September 05, 2010
Retabbed
Login | Register
블로그
  Search
블로그 목록
블로그 아카이브
블로그 검색
Encoding정보 없이 날아오는 POST
Location: Blogs불나방의 소프트 블로그    
Posted by: 불나방 2006-01-11 오전 1:33

간혹 외부 사이트로 부터 오는  POST를 받아서 처리할 경우가 생기게 되는데(결제등에서 많이 발생한다.) ASP.NET은 내부적으로 모든 문자열을 유니코드를 사용한다. 그러므로 외부에서 들어오는 내용을 모두 유니코드로 변환을 자동으로 하게 되는데 POST를 하는 측에서 ContentEncoding을 정확하게 설정하지 않으면 ASP.NET은 그것을 유니코드로 변환하는 과정에서 엉뚱한 결과를 만들게 된다. 특히 국내의 사이트들은 모든 사이트가 euc-KR을 사용한다고 가정하고 프로그래밍 되는 경우가 많아서 대부분 ContentEncoding을 정확히 표시하지 않는다.

이런 경우에는 아래와 같은 코드로 처리한다.

               private void Page_Load(object sender, System.EventArgs e)

               {

                       int len = Request.ContentLength;

                       byte[] b = new byte[len];

                       Request.InputStream.Read(b, 0, len);

                       string s = HttpUtility.UrlDecode(b, 0, len, Encoding.GetEncoding(949));

               }

먼저  Request의 데이터를  byte배열로 읽은 다음 UrlDecode를 사용하여 유니코드 문자열로 변환을 하면된다.

Permalink |  Trackback
Terms | Privacy | host
Copyright 2005 Code99.NET
 | 아티클 | 자료실 | 블로그 | Q&A | 관리자에게