BOARD

문제 해결

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

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 11회 작성일 26-09-28 15:00

본문

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

Windows 서버와 IIS, PHP 5.3.8, MS SQL 2005 환경에서 그누보드 등을 운영할 때 발생하는 한글 데이터 깨짐 및 검색 불가 문제를 해결하기 위한 구체적인 연결 설정 방법을 안내합니다.

Windows PHP MSSQL 연동 시 한글 깨짐 및 검색 문제 해결

PHP에서 sqlsrv_connect 함수를 사용하여 MS SQL에 연동할 때 한글이 표기되지 않거나 검색되지 않는 문제는 연결 문자셋(CharacterSet) 설정이 누락되어 발생합니다.

확인 및 해결 방법

  1. 연결 정보 배열 확인: 데이터베이스 연결을 설정하는 $connectionInfo 배열을 확인합니다.
  2. 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 등 다른 인코딩을 사용 중이라면, 해당 규격에 맞는 캐릭터셋 옵션 값을 확인하여 적용해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.