InternetCanonicalizeUrlA 함수(wininet.h)
안전하지 않은 문자와 공백을 이스케이프 시퀀스로 변환하는 것을 포함하는 URL을 정식화합니다.
구문
BOOL InternetCanonicalizeUrlA(
[in] LPCSTR lpszUrl,
[out] LPSTR lpszBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in] DWORD dwFlags
);
매개 변수
[in] lpszUrl
정식화할 URL을 포함하는 문자열에 대한 포인터입니다.
[out] lpszBuffer
결과 정식화된 URL을 수신하는 버퍼에 대한 포인터입니다.
[in, out] lpdwBufferLength
lpszBuffer 버퍼의 크기(문자)를 포함하는 변수에 대한 포인터입니다. 함수가 성공하면 이 매개 변수는 종료 null 문자를 포함하지 않는 lpszBuffer 버퍼에 실제로 복사된 문자 수를 받습니다. 함수가 실패하면 이 매개 변수는 종료 null 문자를 포함하는 버퍼의 필요한 크기(문자)를 받습니다.
[in] dwFlags
정식화를 제어합니다. 플래그를 지정하지 않으면 함수는 안전하지 않은 모든 문자와 메타 시퀀스(예: .,\ .., 및 ...)를 이스케이프 시퀀스로 변환합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
"#" 또는 "?" 뒤에 있는 문자를 인코딩하거나 디코딩하지 않으며 "?" 뒤에 오는 공백을 제거하지 않습니다. 이 값을 지정하지 않으면 전체 URL이 인코딩되고 후행 공백이 제거됩니다. |
|
URL을 구문 분석하기 전에 모든 %XX 시퀀스를 이스케이프 시퀀스를 포함한 문자로 변환합니다. |
|
발견된 백분율 기호를 인코딩합니다. 기본적으로 백분율 기호는 인코딩되지 않습니다. 이 값은 Microsoft Internet Explorer 5 이상에서 사용할 수 있습니다. |
|
공백만 인코딩합니다. |
|
안전하지 않은 문자를 이스케이프 시퀀스로 변환하지 않습니다. |
|
URL에서 메타 시퀀스(예: "." 및 "..")를 제거하지 않습니다. |
반환 값
성공하면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다. 확장 오류 정보를 가져오려면 GetLastError 함수를 호출합니다. 가능한 오류에는 다음이 포함됩니다.
반환 코드 | 설명 |
---|---|
|
URL을 정식화할 수 없습니다. |
|
정식화된 URL이 너무 커서 제공된 버퍼에 맞지 않습니다. lpdwBufferLength 매개 변수는 정식화된 URL을 보유하는 데 필요한 버퍼의 크기(바이트)로 설정됩니다. |
|
URL 형식이 잘못되었습니다. |
|
잘못된 문자열, 버퍼, 버퍼 크기 또는 flags 매개 변수가 있습니다. |
설명
Internet Explorer 4.0 이상에서는 InternetCanonicalizeUrl이 항상 ICU_BROWSER_MODE 플래그가 설정된 것처럼 작동합니다. 전체 URL을 정식화해야 하는 클라이언트 애플리케이션은 CoInternetParseUrl (작업 PARSE_CANONICALIZE 및 플래그 URL_ESCAPE_UNSAFE 포함) 또는 UrlCanonicalize를 사용해야 합니다.
InternetCanonicalizeUrl 은 ICU_DECODE 플래그가 지정된 경우에도 항상 기본적으로 인코딩됩니다. 다시 인코딩하지 않고 디코딩하려면 ICU_DECODE ICU_NO_ENCODE | 사용합니다. ICU_NO_ENCODE 없이 ICU_DECODE 플래그를 사용하는 경우 URL은 구문 분석되기 전에 디코딩됩니다. 그런 다음, 구문 분석 후 안전하지 않은 문자가 다시 인코딩됩니다. 이 함수는 임의의 프로토콜 체계를 처리하지만 이렇게 하려면 안전하지 않은 문자 집합에서 유추해야 합니다.
Internet Explorer 3.0을 사용하는 경우(또는 인터넷 Explorer 5 이상에 대한 ICU_ENCODE_PERCENT 플래그를 설정할 때) InternetCanonicalizeUrl을 호출하는 애플리케이션은 특정 URL에서 이 함수의 사용량을 추적해야 합니다. URL의 안전하지 않은 문자가 이스케이프 시퀀스로 변환된 경우 URL(플래그 없음)에서 InternetCanonicalizeUrl 을 다시 사용하면 이스케이프 시퀀스가 다른 이스케이프 시퀀스로 변환됩니다. 예를 들어 URL의 빈 공간은 이스케이프 시퀀스 %20으로 변환됩니다. URL에서 InternetCanonicalizeUrl을 다시 호출하면 이스케이프 시퀀스 %20이(가) 이스케이프 시퀀스 %2520으로 변환됩니다. % 기호는 이스케이프 시퀀스를 위해 예약되고 이스케이프 시퀀스 %25로 함수로 대체되는 안전하지 않은 문자이기 때문입니다.
WinINet API의 다른 모든 측면과 마찬가지로 이 함수는 DllMain 내에서 또는 전역 개체의 생성자 및 소멸자에서 안전하게 호출할 수 없습니다.
참고
wininet.h 헤더는 INTERNETCanonicalizeUrl을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | wininet.h |
라이브러리 | Wininet.lib |
DLL | Wininet.dll |