안녕하세요, 이것저것 해보다가 답답해서 질문 드립니다.
먼저 개발환경은 윈도우즈 XP professional SP3이며, Apache 2.2.6 + PHP 5.2.4(RWAPM Suite) + MS-SQL 2005 Express 버전에
Express Management Studio를 깔아서 쓰고 있습니다.
일단 Apache와 PHP 세팅에서 UTF-8로 문자셋을 지정했습니다.(Apache는 AddDefaultCharset, PHP는 default_charset 항목을 utf-8로 수정)
그리고 데이터를 집어 넣는 php 파일들을 모두 utf-8로 인코딩 해서 만든 후에
MS-SQL 2005에서 테이블에 nvarchar(4000)와 ntext의 컬럼을 만들고 여기에 자료를 넣어봤습니다.
일단 완성형 범위의 한글은 웹 페이지에서 잘 나왔습니다. 물론 Express management studio의 쿼리 실행기에서는 데이터가 깨져서 출력이 됐습니다.
그리고 다른 데이터를 입력해봤습니다. '똠방각하'. '뛟', '킈'같은 완성형 범위를 넘어가는 한글이나, 고문서에 나오는 한자등의 자료를 넣으려고 하니까
정상적으로 출력이 되지 않고 깨져서 나옵니다. '똠방각하' 같은 경우는 '?�방각하'로.. 고문서의 한자 같은 경우는 '???��??????' 이런식으로 문자가
깨져서 나오고 있습니다.
PHP의 ms-sql 함수나, sqlsrv_ts.dll 등의 라이브러리를 둘다 써봤지만 결과는 마찬가지였습니다.
APACHE나 PHP 설정에서 빠진 부분은 없는것 같은데 MS-SQL 설정에서 유니코드를 사용하기 위해서 따로 설정을 해줘야 하는 부분이 있는지요?
참고로 MS-SQL 2005 서버 설치, 데이터베이스 생성시 데이터 정렬은 기본값으로 두었습니다. Korea_WANSUNG_CI_AS 였나요?? 하여튼 이런식으로 설정을 했습니다.
P.S 그리고 ntext로 지정된 컬럼을 읽어오려고 하니까
'message: ISQL과 같은 DB-Library나 ODBC 3.7 이전 버전을 사용하여 유니코드 전용 데이터 정렬의 유니코드 데이터나 ntext 데이터를 클라이언트로 보낼 수 없습니다. (severity 16)'
이런 오류가 나는데 분명 이것과 관련이 있을거 같은데 답답하네요 ㅠㅠ. 이 오류는 sqlsrv 라이브러리르 사용한 것이 아니라 그냥 mssql_query() 등의 함수를 썼을때 나왔습니다.
|