INF: UTF-8 데이터를 SQL Server에 저장하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 232580 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR232580
모두 확대 | 모두 축소

요약

일부 응용 프로그램(특히 웹 기반 프로그램)은 UTF-8 인코딩 방법으로 인코드된 유니코드 데이터를 처리해야 합니다. SQL Server 7.0은 다른 유니코드 인코딩(UCS-2)을 사용하며 UTF-8을 유효한 문자 데이터로 인식하지 않습니다. 본 문서에서는 이런 상황을 해결하는 몇 가지 방법을 설명합니다.

추가 정보

유니코드 데이터는 다양한 방법으로 인코드될 수 있습니다. UCS-2 및 UTF-8은 유니코드 문자를 표현하는 비트 패턴을 저장하는 일반적인 두 가지 방법입니다. Microsoft Windows NT, SQL Server 및 SQL Server ODBC 드라이버는 내부적으로 유니코드 데이터를 UCS-2로 표현합니다.

SQL Server 7.0을 UTF-8로 인코드된 유니코드 데이터를 보내고 받는 응용 프로그램의 백 엔드(Back-End)로 사용하는 방법은 아래와 같습니다.
  1. 응용 프로그램이 Active Server Pages(ASP)를 사용하며 컴퓨터에 Internet Information Server(IIS) 5.0과 Microsoft Windows 2000이 설치되어 있으면 서버쪽 ASP 스크립트에 "Session.Codepage=65001"을 추가합니다. 이 행을 추가하면 IIS는 동적으로 생성되는 모든 문자열(Response.Write)을 클라이언트로 보내기 전에 UCS-2에서 UTF-8로 자동으로 변환합니다.

    GET 또는 POST를 통해 클라이언트에서 서버로 보내는 모든 UTF-8 데이터는 자동으로 UCS-2로 변환됩니다. Session.Codepage 속성은 웹 응용 프로그램에서 UTF-8 데이터를 처리하기 위해 권장되는 메서드입니다. IIS 4.0이 설치된 Windows NT 4.0에서는 이 Codepage 설정을 사용 할 수 없습니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
  2. 응용 프로그램에서 적절하게 UCS-2에서 UTF-8로 또는 UTF-8에서 UCS-2로 변환할 수도 있습니다. 아래의 Unicode Consortium 사이트에서 이 유형의 변환에 대한 코드 예제를 찾을 수 있습니다.

    ftp site ftp://ftp.unicode.org/Public/PROGRAMS/CVTUTF/
    Internet Request For Comments 문서 RFC2279에서 UCS-2를 UTF-8로 변환하는 알고리즘에 대한 고급 설명을 볼 수 있습니다.

    Windows NT나 Windows 2000에서는 Win32 함수 MultiByteToWideCharWideCharToMultiByte에 첫 번째 매개 변수로 상수 CP_UTF8(65001)을 전달함으로써 UTF-8과 UCS-2 간을 변환할 수 있습니다.
  3. UTF-8 인코딩 대신 UCS-2를 사용하도록 응용 프로그램을 수정합니다.
  4. BINARY/VARBINARY/IMAGE 열을 이용하여 실제 UTF-8 데이터를 서버에 저장합니다. UTF-8 데이터를 SQL Server에 저장하면 데이터가 유효한 문자 데이터일 때처럼 SQL Server를 사용하여 그러한 값들을 정렬하거나 찾을 수 없습니다. UTF-8 데이터가 있는 열에 대한 연산 중 예상하는 결과를 반환하지 않을 수도 있는 것으로는 "ORDER BY", 비교 연산 ">" 및 "<", SUBSTRING() 같은 내장 SQL Server 문자열 조작 함수가 있습니다.

    그러나, 동등 비교는 여전히 작동합니다. UTF-8 데이터를 SQL Server에 저장할 때, 문자열 열(Column)(CHAR/NCHAR/VARCHAR 등등)을 사용할 수 없습니다. UTF-8은 SQL Server에서 유효한 문자가 아니며 문자열 열(Column) 에 데이터를 저장하면 Microsoft 기술 자료의 다음 문서에서 설명하는 것과 같은 문제를 겪을 수 있습니다. ODBC, Win32 API 호출 및 일반적인 문자열 조작 함수는 UTF-8 데이터에 작동하지 않으므로 웹 브라우저 밖에서(예: 웹 기반이 아닌 ODBC 응용 프로그램에서) 이 데이터를 액세스해야 하는 경우에는 그 응용 프로그램 안에서 UTF-8을 UCS-2로 변환해야 합니다. 이렇게 하면 변환의 부담이 다른 응용 프로그램에 전가됩니다.
  5. 단일 코드 페이지로는 충족될 수 없는 여러 언어가 조합된 데이터를 저장해야 하는 경우가 아니면 유니코드를 사용하지 않을 수도 있습니다.
SQL Server 6.5는 유니코드 데이터의 저장을 지원하지 않습니다. 이 버전의 SQL Server를 사용하는 경우 선택할 수 있는 방법은 4단계와 5단계 뿐입니다.

속성

기술 자료: 232580 - 마지막 검토: 2004년 9월 21일 화요일 - 수정: 4.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
키워드:?
kbhowto ssrvprog KB232580

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com