다음을 통해 공유


유니코드 애플리케이션

다음 두 가지 방법 중 하나로 애플리케이션을 유니코드 애플리케이션으로 다시 컴파일할 수 있습니다.

  • 애플리케이션의 Sqlucode.h 헤더 파일에 포함된 유니코드 #define 포함합니다.

  • 컴파일러의 유니코드 옵션을 사용하여 애플리케이션을 컴파일합니다. (이 옵션은 컴파일러에 따라 다릅니다.)

ANSI 애플리케이션을 유니코드 애플리케이션으로 변환하려면 유니코드 데이터를 저장하고 전달하는 애플리케이션을 작성합니다. 또한 바이트 수를 사용하려면 SQLPOINTER 인수를 지원하는 함수에 대한 호출을 변환해야 합니다.

애플리케이션이 유니코드 애플리케이션으로 컴파일된 후 애플리케이션이 접미사 없이 ODBC API 함수를 호출하는 경우 드라이버 관리자는 애플리케이션을 유니코드 애플리케이션으로 인식하고 기본 드라이버가 유니코드를 지원하는 경우 함수 호출을 유니코드 함수(W 접미사 포함)로 변환합니다. ANSI 애플리케이션이 접미사 없이 함수를 호출하면 기본 드라이버가 ANSI를 지원하는 경우 드라이버 관리자는 이를 ANSI로 변환합니다. 애플리케이션과 드라이버가 모두 동일한 문자 인코딩을 지원하는 경우 드라이버 관리자는 ANSI 애플리케이션에 대한 특정 예외를 제외하고 드라이버에 호출을 전달합니다.

애플리케이션은 유니코드 함수(W 접미사 사용) 및 ANSI 함수(A 접미사 포함 또는 제외)를 모두 호출할 수 있습니다. 유니코드 및 ANSI 함수 호출을 혼합할 수 있습니다. 그러나 커서 라이브러리를 사용하는 경우 유니코드 및 ANSI 함수 호출을 혼합할 수 없습니다. 커서 라이브러리는 혼합이 아닌 유니코드 또는 ANSI입니다.

애플리케이션을 유니코드 애플리케이션 또는 ANSI 애플리케이션으로 컴파일할 수 있도록 작성할 수 있습니다. 이 경우 문자 데이터 형식을 SQL_C_TCHAR 선언할 수 있습니다. 애플리케이션이 유니코드 애플리케이션으로 컴파일되는 경우 SQL_C_WCHAR 삽입하거나 ANSI 애플리케이션으로 컴파일되는 경우 SQL_C_CHAR 삽입하는 매크로입니다. 애플리케이션 프로그래머가 SQLPOINTER를 인수로 사용하는 함수에 주의해야 합니다. 길이 인수의 크기는 애플리케이션이 ANSI인지 유니코드인지에 따라 (문자열 데이터 형식의 경우) 변경되기 때문입니다.

함수는 유니코드 전용 함수 호출(W 접미사 사용), ANSI 전용 함수 호출(A 접미사 사용) 또는 접미사가 없는 ODBC 함수 호출의 세 가지 방법 중 하나로 호출할 수 있습니다. 함수의 세 가지 형식에 대한 인수는 동일합니다. 문자열을 가리키는 SQLCHAR * 인수 또는 SQLPOINTER 인수를 사용하는 함수에만 유니코드 및 ANSI 양식이 필요합니다. SQLBindCol 또는 SQLGetData(유니코드 및 ANSI 양식이 없는)와 같이 문자 형식으로 선언할 수 있는 인수가 있는 함수의 경우 인수를 유니코드 형식, ANSI 형식 또는 C 형식 인수의 경우 SQL_C_TCHAR 매크로로 선언할 수 있습니다. 자세한 내용은 유니코드 데이터를 참조 하세요.

애플리케이션을 사용할 수 있는 유니코드 드라이버가 없더라도 애플리케이션을 유니코드 애플리케이션으로 작성할 수 있습니다. 드라이버 관리자는 유니코드 함수 및 데이터 형식을 ANSI에 매핑합니다. 수행할 수 있는 ANSI 매핑에 대한 유니코드에 대한 몇 가지 제한 사항이 있습니다. 유니코드 애플리케이션을 사용할 유니코드 드라이버가 있으면 성능이 향상되고 유니코드에서 ANSI 매핑에 내재된 제한이 제거됩니다.