강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

utf-8 사용시 설정 - db의 입출력을 완벽하게 utf-8
작성자 : 13 김영철
등록날짜 : 2009.01.14 22:03
2,004
이런저런 삽질 끝에 얻어낸 결론 입니다...

일단 모든 환경과 실제 주고 받는 데이터를 모두 utf-8로 하기 위한 방법 입니다.

이 방법은

php 5.1.2 
mysql 5.0.18 
apache 2.0.53

의 환경에서 테스트 되었습니다.

일단 문제점은,

1. utf-8 버전을 받아 사용해도 실제 데이터는 utf-8로 저장되지 않으므로 서버의 환경이 utf-8이라도 db에 입력되되는 데이터는 utf-8의 형식이 아니다..

2. 1번의 문제로 phpmyadmin등에서 데이터가 깨져 보인다.

3. 데이터 입력시 utf-8로 변환을 해도 출력시 db에서 꺼내올 때 데이터를 기본 형식으로 처리해서 데이터가 깨진다. - 물론 영어는 안깨진다.


이 세 가지 문제점을 해결하기 위한 수정 입니다.

그누보드 디렉토리/lib/common.lib.php 파일에서,

// DB 선택
function sql_select_db($db, $connect)
{
    return @mysql_select_db($db, $connect);
}

이 부분을 아래와 같이 수정 합니다.

// 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형식으로 생성이 됩니다.

인스톨 하기 전에 이러한 수정을 하고난 후에 설치를 하면 완벽하게 utf-8형식으로 데이터를 입출력 할 수 있습니다.

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로 써야 합니다... 서버 구축시 의외로 이 부분에서 많은 분들이 실수를 하시더군요...

일단 이렇게 해서 저는 완전하게 utf-8형식으로 입출력을 하고 있습니다.

출처 : Tong - 드렁크수달스님의 ■ PHP ■통

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3285 이것은 AI파일 미리보기입니다. 댓글3 M 최고의하루 01.15 3585
3284 이미지미리보기pds파일미리보기파일입니다^^ 댓글2 99 단국강토 01.14 2825
3283 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2615
3282 자판기안의 특수문자 99 단국강토 01.13 2530
3281 ntdll.dll 오류 해결방법 M 최고관리자 01.12 4392
3280 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3095
3279 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2229
3278 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2497
3277 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 2841
3276 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2390
3275 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2350
3274 이것은 AI파일 미리보기입니다. 댓글2 M 최고의하루 01.15 4029
3273 이미지미리보기pds파일미리보기파일입니다^^ 99 단국강토 01.14 2445
3272 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2782
3271 공유기 차단 무력화 시키는 법 99 단국강토 01.13 3539
3270 자판기안의 특수문자 99 단국강토 01.13 2362
3269 ntdll.dll 오류 해결방법 M 최고의하루 01.12 3658
3268 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3223
3267 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2167
3266 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2485
3265 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 3310
3264 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2211
3263 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2306
3262 [컴퓨터 키보드, 특수문자 정식 명칭들] M 최고의하루 12.18 3699
3261 하드,CPU,RAM 지원표 M 최고의하루 12.18 2581
3260 award bios 어워드 바이오스 설정법 M 최고의하루 12.18 3940
3259 내장 그래픽카드 죽이는 법 M 최고의하루 12.04 4877
3258 컴퓨터 조립 M 최고의하루 12.04 2829
3257 USB 버젼 속도 차이 2 천진난만 02.20 2373
3256 제가 사용하고 있는 마케팅프로그램입니다 댓글1 3 천지인 05.23 13190
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취