이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 16009|회답: 2

[ASP.NET] ASP.NET 에서의 URL 인코딩 및 디코딩

[링크 복사]
게시됨 2016. 1. 12. 오후 1:04:21 | | | |

다음 두 URL을 살펴보겠습니다. 두 URL이 동일한 매개변수를 통과하나요?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

겉보기에는 다를 수 있지만, 사실 모두 ".net 기술"을 위해 UrlEncode를 사용하는데, 하나는 GB2312 인코딩이고 다른 하나는 Utf-8 인코딩입니다.
다음 코드는 위의 인코딩 효과를 얻을 수 있습니다:

string tmp1 = System.Web.HttpUtility.UrlEncode(".net technology", System.Text.Encoding.GetEncoding("GB2312"));
string tmp2 = System.Web.HttpUtility.UrlEncode(".net 기술", System.Text.Encoding.UTF8);

저희 웹사이트는 다른 프로그램에서 호출될 수 있습니다.
예를 들어, 운영체제의 ASP 페이지는 중국어 간체체를 ASP.net 페이지에 전달해야 합니다.
기본적으로 중국어 간체 운영체제에서는 ASP의 Server.UrlEncode 메서드가 중국어를 GB2312 인코딩으로 인코딩합니다.
하지만 기본적으로 ASP.net 페이지는 UTF-8로 인코딩되어 있습니다.
이 경우 Request.QueryString["Tag"]를 사용해 값을 받아들이면 중국어 정보를 받을 수 없고, 단계별 디버깅에서 왜곡된 문자가 보일 수 있습니다.
현재 Request.QueryString["Tag"]는 왜곡된 문자로 받아들여지지만, URL은 현재 오류가 없습니다.

해결책은 URL의 매개변수를 직접 분석한 후, .net의 기본 UTF-8 인코딩 대신 GB2312 인코딩에 따라 매개변수 값을 복호화하는 것입니다.
사실 마이크로소프트도 이에 대응하는 함수를 제공하므로, 우리가 직접 정규 표현식을 사용하지 않아도 URL 문자열을 분석할 수 있습니다.

데모 코드는 다음과 같습니다:

string q = Request.Url.Query;

System.Collections.Specialized.NameValueCollection nv =
System.Web.HttpUtility.ParseQueryString(q, System.Text.Encoding.GetEncoding("GB2312"));
Response.Write(nv["태그"]);

Lutz Roeder의 .NET Reflector를 사용해 System.Web.HttpUtility.ParseQueryString 메서드의 구현을 살펴보겠습니다:
계속 확인해 보면, URL 매개변수 문자열 분석을 처리하는 코드는 다음과 같습니다:

System.Web.HttpValueCollection 클래스의 다음 함수는 URL 매개변수의 파싱을 구현합니다
여기서 각 캐릭터가 수행하는 분석임을 알 수 있습니다.



상대방이 우리에게 어떤 인코딩 방식을 전달하는지는 매개변수로 전달하는 것이 가장 좋습니다. 그래야 사용자의 이 매개변수에 따라 복호화할 수 있습니다.




이전의:집을 작업용 스튜디오로 꾸미는 건가요?
다음:파일 매개변수에 대한 구체적인 설명AssemblyInfo.cs
 집주인| 게시됨 2024. 12. 4. 오후 5:15:50 |
.NET Core URL 인코딩 및 디코딩

 집주인| 게시됨 2024. 12. 4. 오후 5:35:32 |
서로 다른 문자 집합은 다음과 같이 인코딩됩니다:



코드:



면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com