간혹 외부 사이트로 부터 오는 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를 사용하여 유니코드 문자열로 변환을 하면된다.