다음을 통해 공유


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
잘못된 문자열, 버퍼, 버퍼 크기 또는 플래그 매개 변수가 있습니다.

발언

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을 사용하는 경우(또는 Internet 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
라이브러리 위니넷 lib
DLL Wininet.dll

참고 항목

Uniform Resource Locators 처리

winINet Functions