디비 백업과 인코딩 문제 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

디비 백업과 인코딩 문제 정보

디비 백업과 인코딩 문제

본문

현재 mysql 5 utf8 의 환경에서 그누보드 euc-kr 버전을 쓰고 있습니다. (외국 호스팅 서비스)

사이트 자체내에는 전혀 문제가 없지만, phpmyadmin으로 디비 내용을 보면 글씨가 다 깨져서 나옵니다.

문제는 현재 euc-kr버전의 사이트를 utf-8환경으로 바꾸려는데요,
html 파일을 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 로 설정을 해도 디비에 있는 내용들이 다 깨져서 나옵니다.

이럴경우엔 어떻게 해야하나요?

phpmyadmin에서 볼때 다 깨져서 나오는 디비 내용을 정상적으로 보이게 할수는 없나요?

도와주세요.
  • 복사

댓글 전체

도움이 될지 모르지만, 사용환경에 따라 서버,문자셋,프로그램버전...여러변수가있어 정해진 방법은 없고 아래의 경우와 같다면 한번해보세요
Collation이 latin1으로 되어있어 db가 깨져보이고 사이트는 정상출력 되는경우 해결방법입니다

백업 받으실때
mysqldump --default-character-set=latin1 -u -p db명 > test.sql 후 파일열어서  사용latin1 을 euckr로 변경후 다시 디비에 넣으시면 정상 작동될겁니다.
혹시 같은 서버에서 작업하실거면 db생성시에
CREATE DATABASE `db명` DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci;
저같은경우 cafe24 utf-8 이용하다가
다른데로 utf-8 로 이전했는데요
php 버전이랑 mysql 버전이 달라서
언어셋은 정상임에도 불구하고 자꾸 euc_kr 로 되서 깨지는경우가 있었는데요.
이런경우 이렇게 해결했습니다.

lib폴더안에 common.lib.php 파일이 있는데요

이파일안에서

// DB 연결
function sql_connect($host, $user, $pass)
{
    global $g4;

    return @mysql_connect($host, $user, $pass);
}


// DB 선택
function sql_select_db($db, $connect)
{
    global $g4;

    return @mysql_select_db($db, $connect);
}


이부분을 아래와 같이

// DB 연결
function sql_connect($host, $user, $pass)
{
    global $g4;

    if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 ");
    return @mysql_connect($host, $user, $pass);
}


// DB 선택
function sql_select_db($db, $connect)
{
    global $g4;

    if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 ");
    return @mysql_select_db($db, $connect);
}



이렇게 변경을 하니 정상적으로 웹페이지 출력이 되는것이었습니다.

일부 php 버전에서 쿼리 셋네임을 정해줘야 정상적으로 출력된다고 하니

 if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 ");

이부분을 적당히 자신의 언어셋에 맞춰 수정해 사용해 보세요.
© SIRSOFT
현재 페이지 제일 처음으로