아래 tron 님의 팁을 보완수정 하였습니다..
아래 tron 님의 팁을 적용하고보니 한글의 입출력은 잘 되는데,
common.lib.php 파일의 109번 라인에서 에러를 보이더군요..
그 부분과 설치과정에서의 utf-8 처리문제를 보완수정 한것입니다..
보완수정한 부분을 제외하면 아래 tron 님의 글을 그대로 인용했습니다..... tron님 죄송 ... ^^
일단 모든 환경과 실제 주고 받는 데이터를 모두 utf-8로 하기 위한 방법 입니다.
이 방법은
php 5.1.1
mysql 5.0.18
apache 2.0.55
서버의 모든 환경설정 = utf8
의 환경에서 테스트 되었습니다.
일단 문제점은,
1. utf-8 버전을 받아 사용해도 실제 데이터는 utf-8로 저장되지 않으므로 서버의 환경이 utf-8이라도 db에 입력되되는 데이터는 utf-8의 형식이 아니다..
2. 1번의 문제로 phpmyadmin등에서 데이터가 깨져 보인다.
3. 데이터 입력시 utf-8로 변환을 해도 출력시 db에서 꺼내올 때 데이터를 기본 형식으로 처리해서 데이터가 깨진다. - 물론 영어는 안깨진다.
이 세 가지 문제점을 해결하기 위한 수정 입니다.
=========================================================
그누보드 디렉토리/common.php 파일의 10번줄 바로 아래에
@mysql_query("set names utf8");
이것 한줄 추가해 줍니다..
다음..그누보드 디렉토리/lib/common.lib.php 파일에서,
// DB 연결
function sql_connect($host, $user, $pass)
{
return @mysql_connect($host, $user, $pass);
}
// DB 선택
function sql_select_db($db, $connect)
{
return @mysql_select_db($db, $connect);
}
이 부분을 아래와 같이 수정 합니다.
// DB 연결
function sql_connect($host, $user, $pass)
{
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
return @mysql_connect($host, $user, $pass);
}
// DB 선택
function sql_select_db($db, $connect)
{
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
return @mysql_select_db($db, $connect);
}
=======================================================
이렇게 하면,
db접속 후에 모든 데이터의 처리를 utf-8로 합니다. 주의할 점은 mysql 버전이 5 이상의 경우 utf-8이 아니라 utf8 입니다. 이렇게 하고 데이터를 불러오거나 저장을 하면 db에도 실제로 utf-8현식으로 저장이 됩니다.
주의하실 점은 이미 기존의 데이터가 있는 상황에서 @mysql_query("set names utf8");을 적용하면 기존의 쌓인 데이터는 실제 utf-8이 아니므로 출력 부분에서도 깨져 보입니다. 따라서 초기 세팅시에 위 부분을 수정하시고 인스톨을 진행하면 모든 부분에서 utf-8로의 입출력이 가능 합니다.
---------------------------------------------------------------------------------------------------------------------------
또한, mysql 5 이상의 환경에서 인스톨시 보다 안전하게 인스톨을 위해서는 인스톨 디렉토리의 sql_gnuboard4.sql 파일을 열어서 각 테이블 생성 DDL의 마지막에,
type=MyISAM;
이 부분을
ENGINE=MyISAM DEFAULT CHARSET=utf8;
이렇게 해 주시면 테이블 또한 확실하게 utf-8형식으로 생성이 됩니다.
저의 경우는 이부분은 안해도 되더군요...^^
---------------------------------------------------------------------------------------------------------------------------------
설치할때 그냥 설치하면 기본으로 입력되는 내용들이 모두 깨지는데,
그누보드폴더/install/install_db.php 파일의 쿼리부분 몇군데에
@mysql_query("set names utf8");
를 넣어주면 설치시에 기본으로 디비에 입력되는 내용들도 모두 한글로 입력이 됩니다.
(첨부파일 참조)
첨부파일을 압축을 풀면 파일이 세개가 나옵니다..
install_db.php 파일은 install 폴더에
common.php 파일은 그누보드폴더에
common.lib.php 파일은 그누보드/lib 폴더에
넣어주시면 위의 수정과정은 하시지 않아도 됩니다..
-----------------------------------------------------------------------------------------------------------------------------------
인스톨 하기 전에 이러한 수정을 하고난 후에 설치를 하면 완벽하게 utf-8형식으로 데이터를 입출력 할 수 있습니다.
위의 첨부 이미지처럼 phpmyadmin 에서도 한글이 깨짐없이 출력 됩니다..
db 접속하는 부분이 위 수정 파일 말고 또 어느 부분에 있는지는 아직 제가 다 파악을 못했습니다만, 대부분의 db접속후에 실제 쿼리를 사용하기 전에 먼저 set names utf8 을 쿼리로 날려 주시면 db는 모든 데이터의 입출력을 utf-8형식으로 처리 합니다.
여담..
mysql 5 부터 utf-8 이 아니라 utf8로 바뀌었습니다. euc-kr도 euckr로 바뀌었구요... 따라서 db 환경이나 db 테이블 생성 같은 경우에는 utf8이나 euckr을 써야 하고 php나 apache에서는 그대로 utf-8이나 euc-kr로 써야 합니다... 서버 구축시 의외로 이 부분에서 많은 분들이 실수를 하시더군요...
그렇다고 config.php 파일에서
$g4[charset] = "UTF-8";
이부분을 utf8 로 수정하는것은 하지 마세요...
이부분은 아파치에서 담당하니까 서버마다 다를수도 있어요...
UTF-8 이냐, utf-8 이냐, 아니면 utf8 이냐 하는것은,
apache 의 http.conf 에서는 UTF-8 을
php 의 php.ini 에서는 utf-8 을
mysql 의 my.ini 에서는 utf8 을
사용하시면 됩니다....
아래 tron 님의 팁을 적용하고보니 한글의 입출력은 잘 되는데,
common.lib.php 파일의 109번 라인에서 에러를 보이더군요..
그 부분과 설치과정에서의 utf-8 처리문제를 보완수정 한것입니다..
보완수정한 부분을 제외하면 아래 tron 님의 글을 그대로 인용했습니다..... tron님 죄송 ... ^^
일단 모든 환경과 실제 주고 받는 데이터를 모두 utf-8로 하기 위한 방법 입니다.
이 방법은
php 5.1.1
mysql 5.0.18
apache 2.0.55
서버의 모든 환경설정 = utf8
의 환경에서 테스트 되었습니다.
일단 문제점은,
1. utf-8 버전을 받아 사용해도 실제 데이터는 utf-8로 저장되지 않으므로 서버의 환경이 utf-8이라도 db에 입력되되는 데이터는 utf-8의 형식이 아니다..
2. 1번의 문제로 phpmyadmin등에서 데이터가 깨져 보인다.
3. 데이터 입력시 utf-8로 변환을 해도 출력시 db에서 꺼내올 때 데이터를 기본 형식으로 처리해서 데이터가 깨진다. - 물론 영어는 안깨진다.
이 세 가지 문제점을 해결하기 위한 수정 입니다.
=========================================================
그누보드 디렉토리/common.php 파일의 10번줄 바로 아래에
@mysql_query("set names utf8");
이것 한줄 추가해 줍니다..
다음..그누보드 디렉토리/lib/common.lib.php 파일에서,
// DB 연결
function sql_connect($host, $user, $pass)
{
return @mysql_connect($host, $user, $pass);
}
// DB 선택
function sql_select_db($db, $connect)
{
return @mysql_select_db($db, $connect);
}
이 부분을 아래와 같이 수정 합니다.
// DB 연결
function sql_connect($host, $user, $pass)
{
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
return @mysql_connect($host, $user, $pass);
}
// DB 선택
function sql_select_db($db, $connect)
{
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
return @mysql_select_db($db, $connect);
}
=======================================================
이렇게 하면,
db접속 후에 모든 데이터의 처리를 utf-8로 합니다. 주의할 점은 mysql 버전이 5 이상의 경우 utf-8이 아니라 utf8 입니다. 이렇게 하고 데이터를 불러오거나 저장을 하면 db에도 실제로 utf-8현식으로 저장이 됩니다.
주의하실 점은 이미 기존의 데이터가 있는 상황에서 @mysql_query("set names utf8");을 적용하면 기존의 쌓인 데이터는 실제 utf-8이 아니므로 출력 부분에서도 깨져 보입니다. 따라서 초기 세팅시에 위 부분을 수정하시고 인스톨을 진행하면 모든 부분에서 utf-8로의 입출력이 가능 합니다.
---------------------------------------------------------------------------------------------------------------------------
또한, mysql 5 이상의 환경에서 인스톨시 보다 안전하게 인스톨을 위해서는 인스톨 디렉토리의 sql_gnuboard4.sql 파일을 열어서 각 테이블 생성 DDL의 마지막에,
type=MyISAM;
이 부분을
ENGINE=MyISAM DEFAULT CHARSET=utf8;
이렇게 해 주시면 테이블 또한 확실하게 utf-8형식으로 생성이 됩니다.
저의 경우는 이부분은 안해도 되더군요...^^
---------------------------------------------------------------------------------------------------------------------------------
설치할때 그냥 설치하면 기본으로 입력되는 내용들이 모두 깨지는데,
그누보드폴더/install/install_db.php 파일의 쿼리부분 몇군데에
@mysql_query("set names utf8");
를 넣어주면 설치시에 기본으로 디비에 입력되는 내용들도 모두 한글로 입력이 됩니다.
(첨부파일 참조)
첨부파일을 압축을 풀면 파일이 세개가 나옵니다..
install_db.php 파일은 install 폴더에
common.php 파일은 그누보드폴더에
common.lib.php 파일은 그누보드/lib 폴더에
넣어주시면 위의 수정과정은 하시지 않아도 됩니다..
-----------------------------------------------------------------------------------------------------------------------------------
인스톨 하기 전에 이러한 수정을 하고난 후에 설치를 하면 완벽하게 utf-8형식으로 데이터를 입출력 할 수 있습니다.
위의 첨부 이미지처럼 phpmyadmin 에서도 한글이 깨짐없이 출력 됩니다..
db 접속하는 부분이 위 수정 파일 말고 또 어느 부분에 있는지는 아직 제가 다 파악을 못했습니다만, 대부분의 db접속후에 실제 쿼리를 사용하기 전에 먼저 set names utf8 을 쿼리로 날려 주시면 db는 모든 데이터의 입출력을 utf-8형식으로 처리 합니다.
여담..
mysql 5 부터 utf-8 이 아니라 utf8로 바뀌었습니다. euc-kr도 euckr로 바뀌었구요... 따라서 db 환경이나 db 테이블 생성 같은 경우에는 utf8이나 euckr을 써야 하고 php나 apache에서는 그대로 utf-8이나 euc-kr로 써야 합니다... 서버 구축시 의외로 이 부분에서 많은 분들이 실수를 하시더군요...
그렇다고 config.php 파일에서
$g4[charset] = "UTF-8";
이부분을 utf8 로 수정하는것은 하지 마세요...
이부분은 아파치에서 담당하니까 서버마다 다를수도 있어요...
UTF-8 이냐, utf-8 이냐, 아니면 utf8 이냐 하는것은,
apache 의 http.conf 에서는 UTF-8 을
php 의 php.ini 에서는 utf-8 을
mysql 의 my.ini 에서는 utf8 을
사용하시면 됩니다....
댓글 38개
게시글 목록
| 번호 | 제목 |
|---|---|
| 2604 | |
| 2588 | |
| 2587 | |
| 2572 | |
| 2565 | |
| 2561 | |
| 2527 | |
| 2515 | |
| 2501 | |
| 2497 | |
| 2487 | |
| 2484 | |
| 2481 | |
| 2479 | |
| 2463 | |
| 2462 | |
| 2433 | |
| 2396 | |
| 2393 | |
| 2381 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기