디비 백업과 인코딩 문제 정보
디비 백업과 인코딩 문제본문
현재 mysql 5 utf8 의 환경에서 그누보드 euc-kr 버전을 쓰고 있습니다. (외국 호스팅 서비스)
사이트 자체내에는 전혀 문제가 없지만, phpmyadmin으로 디비 내용을 보면 글씨가 다 깨져서 나옵니다.
문제는 현재 euc-kr버전의 사이트를 utf-8환경으로 바꾸려는데요,
html 파일을 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 로 설정을 해도 디비에 있는 내용들이 다 깨져서 나옵니다.
이럴경우엔 어떻게 해야하나요?
phpmyadmin에서 볼때 다 깨져서 나오는 디비 내용을 정상적으로 보이게 할수는 없나요?
도와주세요.
사이트 자체내에는 전혀 문제가 없지만, 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;
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;
제가 쓰는 호스팅은 ssh나 telnet이 금지되어있습니다.
phpmyadmin으로는 어떻게 방법이 없을까요?
phpmyadmin으로는 어떻게 방법이 없을까요?

저같은경우 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 ");
이부분을 적당히 자신의 언어셋에 맞춰 수정해 사용해 보세요.
다른데로 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 ");
이부분을 적당히 자신의 언어셋에 맞춰 수정해 사용해 보세요.