MS SQL에서 유니코드 (다국어)를 사용하기 위해서는 어떻게 해야하나요?
MS SQL에서 다국어를 지원하기 위해서 해당 Table의 칼럼은 nvarchar 또는 nchar 형식으로 저장되어야 합니다.
이때 접두어 'N'은 National을 의미 합니다.
기존의 char 및 varchar과는 어떻게 다른가요?
클라이언트 컴퓨터는 운영 체제의 로컬의 코드 페이지를 사용하여 문자를 나타내는 비트 패턴을 해석합니다.
즉 일반적으로 char 및 varchar를 사용하게되면 로컬 운영체제의 코드 페이지를 참조하여 비트 패턴을 해석합니다.
nvarchar 및 nchar를 사용하면 MS SQL은 문자 인코딩시 UCS-2에 따라 2 Byte (65,536 개의 문자 표현) 를 이용하여 인코딩 합니다. 이를 통해 문자 변환 문제를 최소화 합니다.
(참고 : 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나인 UTF-8의 경우 문자 한자를 위해 1byte ~ 4btye를 이용하게 됩니다.)
기존에 보이는 아티클 중에는 영문은 2byte, 한글 및 기타 동아시아 언어는 4byte를 이용한다는 것을 본적은 있습니다만 MS 공식 문서 및 제가 확인한 사항이 아니므로 논외로 하겠습니다.
Code Page
nvarchar 는 어떻게 이용하나요?
Table을 만들고 컬럼을 nvarchar로 선언 한 다음 데이터 입력 및 정열 및 Like 구문을 이용한출력을 해보겠습니다.
간체TEST 언어: 虫妇蜡飞书邓谷尘从毙
번체TEST 언어: 蟲婦蠟飛書鄧穀塵從斃
nvarchar 및 nchar 를 이용할 때 주의해야 할 점은 없나요?
위의 insert 구문을 보신 분은 아시겠지만 모든 유니코드 문자열 상수의 접두어로 N 을 선언해 줘야 합니다.
즉 @variable1 = N'abc' 의 형태로 사용해야 합니다.
그와 동시에 ASCII(), CHAR() 함수는 각각 UNICODE(), NCHAR() 로 대체 하여야 합니다.
기존에 varchar(), char() 는 어떻게 변환 하나요?
CONVERT(), CAST() 함수를 이용하여 변환 하면 됩니다.
참고 :
http://technet.microsoft.com/ko-kr/library/ms186939.aspx
http://technet.microsoft.com/ko-kr/library/ms191200.aspx
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2615325&SiteID=1
http://technet.microsoft.com/ko-kr/library/ms177259.aspx
http://technet.microsoft.com/ko-kr/library/ms187928.aspx