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

정식화를 제어합니다. 플래그를 지정하지 않으면 함수는 안전하지 않은 모든 문자와 메타 시퀀스(예: .,\ .., 및 ...)를 이스케이프 시퀀스로 변환합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
ICU_BROWSER_MODE
"#" 또는 "?" 뒤에 있는 문자를 인코딩하거나 디코딩하지 않으며 "?" 뒤에 오는 공백을 제거하지 않습니다. 이 값을 지정하지 않으면 전체 URL이 인코딩되고 후행 공백이 제거됩니다.
ICU_DECODE
URL을 구문 분석하기 전에 모든 %XX 시퀀스를 이스케이프 시퀀스를 포함한 문자로 변환합니다.
ICU_ENCODE_PERCENT
발견된 백분율 기호를 인코딩합니다. 기본적으로 백분율 기호는 인코딩되지 않습니다. 이 값은 Microsoft Internet Explorer 5 이상에서 사용할 수 있습니다.
ICU_ENCODE_SPACES_ONLY
공백만 인코딩합니다.
ICU_NO_ENCODE
안전하지 않은 문자를 이스케이프 시퀀스로 변환하지 않습니다.
ICU_NO_META
URL에서 메타 시퀀스(예: "." 및 "..")를 제거하지 않습니다.

반환 값

성공하면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다. 확장 오류 정보를 가져오려면 GetLastError 함수를 호출합니다. 가능한 오류에는 다음이 포함됩니다.

반환 코드 설명
ERROR_BAD_PATHNAME
URL을 정식화할 수 없습니다.
ERROR_INSUFFICIENT_BUFFER
정식화된 URL이 너무 커서 제공된 버퍼에 맞지 않습니다. lpdwBufferLength 매개 변수는 정식화된 URL을 보유하는 데 필요한 버퍼의 크기(바이트)로 설정됩니다.
ERROR_INTERNET_INVALID_URL
URL 형식이 잘못되었습니다.
ERROR_INVALID_PARAMETER
잘못된 문자열, 버퍼, 버퍼 크기 또는 flags 매개 변수가 있습니다.

설명

Internet Explorer 4.0 이상에서는 InternetCanonicalizeUrl이 항상 ICU_BROWSER_MODE 플래그가 설정된 것처럼 작동합니다. 전체 URL을 정식화해야 하는 클라이언트 애플리케이션은 CoInternetParseUrl (작업 PARSE_CANONICALIZE 및 플래그 URL_ESCAPE_UNSAFE 포함) 또는 UrlCanonicalize를 사용해야 합니다.

InternetCanonicalizeUrlICU_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은 서버 구현을 지원하지 않습니다. 또한 서비스에서 사용하지 않아야 합니다. 서버 구현 또는 서비스의 경우 WinHTTP(Microsoft Windows HTTP 서비스)를 사용합니다.
 

참고

wininet.h 헤더는 INTERNETCanonicalizeUrl을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 wininet.h
라이브러리 Wininet.lib
DLL Wininet.dll

추가 정보

균일한 리소스 로케이터 처리

WinINet 함수