Windows 환경에서 PHP와 MS SQL 연동 시 한글 깨짐 및 검색 오류 해결 방법
페이지 정보

본문
Windows 환경에서 PHP와 MS SQL 연동 시 한글 깨짐 및 검색 오류 해결 방법
Windows 서버와 IIS, PHP 5.3.8, MS SQL 2005 환경에서 그누보드 등을 운영할 때 발생하는 한글 데이터 깨짐 및 검색 불가 문제를 해결하기 위한 구체적인 연결 설정 방법을 안내합니다.
Windows PHP MSSQL 연동 시 한글 깨짐 및 검색 문제 해결
PHP에서 sqlsrv_connect 함수를 사용하여 MS SQL에 연동할 때 한글이 표기되지 않거나 검색되지 않는 문제는 연결 문자셋(CharacterSet) 설정이 누락되어 발생합니다.
확인 및 해결 방법
- 연결 정보 배열 확인: 데이터베이스 연결을 설정하는
$connectionInfo배열을 확인합니다. - CharacterSet 옵션 추가:
$connectionInfo배열에 아래와 같이"CharacterSet" => "UTF-8"항목을 추가합니다.
$connectionInfo = array("Database" => "$mydb", "UID" => "$myid", "PWD" => "$mypw", "CharacterSet" => "UTF-8");
$conn = sqlsrv_connect($serverName, $connectionInfo);
위와 같이 설정하면 한글 검색과 표기가 모두 정상적으로 동작합니다.
sqlsrv_connect 연결 정보 배열에 CharacterSet 옵션 추가 방법
PHP에서 MS SQL 연동 시 한글 표기 및 검색 불가 문제가 발생할 때, sqlsrv_connect 함수에 전달하는 연결 정보 배열($connectionInfo)에 CharacterSet 옵션을 추가하여 UTF-8로 지정합니다.
코드 수정 방법
기존 연결 설정 배열에 "CharacterSet" => "UTF-8" 항목을 추가합니다.
$serverName = "SQL_Server";
$myid = "UserID";
$mypw = "Password";
$mydb = "DB_Name";
// 수정 전: 한글 검색 및 표기 불가
$connectionInfo = array("Database" => "$mydb", "UID" => "$myid", "PWD" => "$mypw");
$conn = sqlsrv_connect($serverName, $connectionInfo);
// 수정 후: 한글 검색 및 표기 가능
$connectionInfo = array(
"Database" => "$mydb",
"UID" => "$myid",
"PWD" => "$mypw",
"CharacterSet" => "UTF-8"
);
$conn = sqlsrv_connect($serverName, $connectionInfo);
확인 및 주의사항
- 구성 환경 예시: IIS 7.0, PHP 5.3.8, MS SQL 2005 환경에서
CharacterSet설정 추가로 한글 표기와 검색 정상 작동이 확인되었습니다. - 예외 사항: 다른 인코딩 환경(예: EUC-KR 등)에서의 동작 여부는 확인되지 않았으므로 운영 환경의 인코딩 상태를 먼저 확인해야 합니다.
Windows PHP MSSQL 연동 시 한글 깨짐 및 검색 문제 해결
원인 및 확인
PHP에서 sqlsrv_connect 함수를 사용하여 MS SQL에 연결할 때, 연결 문자셋(CharacterSet) 설정이 누락되면 한글 표기가 불가하거나 한글 검색이 되지 않는 문제가 발생할 수 있습니다.
해결 방법
데이터베이스 연결 정보를 담는 배열에 CharacterSet 옵션을 UTF-8로 추가하여 설정합니다.
$serverName = "SQL_Server";
$myid = "UserID";
$mypw = "Password";
$mydb = "DB_Name";
$connectionInfo = array(
"Database" => "$mydb",
"UID" => "$myid",
"PWD" => "$mypw",
"CharacterSet" => "UTF-8"
);
$conn = sqlsrv_connect($serverName, $connectionInfo);
적용 후 확인
sqlsrv_connect연결 정보 배열에'CharacterSet' => 'UTF-8'을 추가한 뒤 데이터베이스 조회 결과 한글이 정상적으로 출력되는지 확인합니다.- 한글 검색 쿼리가 정상적으로 동작하는지 확인합니다.
주의 사항 및 예외 사항
- 다른 인코딩 환경(EUC-KR 등)에서의 동작 여부는 테스트 서버의 MS-SQL 버전 정보와 인코딩 방식 차이에 따라 달라질 수 있으므로 운영 환경을 확인해야 합니다.
- 동일한 PHP 버전이라도 윈도우 서버 OS와 MS SQL 버전이 상위 버전(예: SQL Server 2012 등)으로 구성된 실서버 환경에서는 인코딩 방식 차이로 인해 한글 인서트 및 표기 시 예외적인 문제가 발생할 수 있으므로 운영 중인 DB 서버와 클라이언트 간의 캐릭터셋 설정을 비교 점검해야 합니다.
상황별 대응 가이드
| 내 상황 | 선택 기준 | 다음 행동 |
|---|---|---|
| PHP 5.3.8, IIS 7.0, MS SQL 2005 환경에서 한글 깨짐/검색 불가 발생 | sqlsrv_connect 연결 정보에 CharacterSet 옵션 누락 확인 | 연결 배열에 'CharacterSet' => 'UTF-8' 추가 |
| 테스트 서버와 다른 버전(예: SQL Server 2012)의 실서버 환경에서 한글 입력 오류 발생 | 서버 간 인코딩 방식 및 캐릭터셋 설정 차이 확인 | DB 서버와 클라이언트 간 캐릭터셋 설정 일치 여부 점검 및 환경별 인코딩 규격 확인 |
실전 FAQ
Q. UTF-8로 설정해도 한글이 깨지는 경우가 있나요?
- 테스트 서버와 실서버의 MS-SQL 버전이나 OS 환경이 다를 경우 인코딩 방식의 불일치로 예외가 발생할 수 있습니다. 운영 중인 DB 서버의 캐릭터셋 설정과 클라이언트 설정이 일치하는지 먼저 확인하십시오.
Q. EUC-KR 등 다른 인코딩 환경에서는 어떻게 하나요?
- 본 자료는 UTF-8 환경을 기준으로 작성되었습니다. 시스템 전체가 EUC-KR 등 다른 인코딩을 사용 중이라면, 해당 규격에 맞는 캐릭터셋 옵션 값을 확인하여 적용해야 합니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드4 게시판 카테고리 한글 인코딩 및 경로 오류 해결 가이드 26.09.28
- 다음글그누보드4 특정 레벨 이상 회원 비밀글 열람 권한 부여 방법 26.09.27
댓글목록
등록된 댓글이 없습니다.