UTF-8 MySQL로 변환하는데 생기는문제 정보
UTF-8 MySQL로 변환하는데 생기는문제본문
이거 해결해주시면 감사하겠네요. 별것아닌데. 이상하게 계속 에러가 나서요...
앞에서 질문을 해서 답변을 주신 분이 계셔요... 다시 질문하려면 앞에 올린 질문을 해결하라 어쩌라해서 "답변채택"을 했지만 사실은 안되거든요.
앞에서 일반 한글코드로 된 MySQL의 자료를 빽업받아서 UTF8 로 세팅된 MySQL에 phpMyAdmin으로 Import하기전에 에디터열어서 파일저장을 UTF8로 해서 임포트하면 된다고 했는데 사실 그렇게 하면 이렇게 에러가 자꾸 뜹니다.
============================================================================오류
SQL 질의:
-- phpMyAdmin SQL Dump
-- version 2.7.0-pl2
-- http://www.phpmyadmin.net
--
-- 호스트: localhost
-- 처리한 시간: 07-04-10 15:24
-- 서버 버전: 4.0.22
-- PHP 버전: 4.4.1
--
-- 데이터베이스: `gsdallas01`
--
-- --------------------------------------------------------
--
-- 테이블 구조 `ZOTTA_POPUP`
--
DROP TABLE IF EXISTS `ZOTTA_POPUP` ;
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
DROP TABLE IF EXISTS `ZOTTA_POPUP`' at line 1 ============================================================================그래서 문제는 바로 위에 보이시는 한글이 깨지는 부분인가봐요...즉 import하면서 컨버팅하는 부분에서 에러가 나는거라서 에디터로서 어떻게 할 수 가 없습니다. 그 다음해 본것이. 임의로 SQL (phpMyAdmin으로 작업한 내용입니다. ) 창에 빽업받은 쿼리를 복사해서 실행시켰습니다. 그러면 당연히 되죠.. 문제는 한글이 모두 깨어진다는 겁니다. 작업과정과 서로의 버전들을 잠시 보여드리죠...1. 빽업받는 쪽의 세팅과 버전들입니다. 이것으로 export했습니다. 빽업할때 옵션들이 있는데 늘 하는 거라서 여기서는 어려움이 없었습니다. 
2. 임포트할 쪽의 세팅화면입니다. 미국 호스팅회사입니다.
분명히 한글이 UTF8으로 세팅되어있죠?
3. 앞에서 했던것처럼 이번MYSQL을 빽업받아서 그 SQL파일을 에디터를 이용해서 UTF8으로 저장해서 새 서버로 IMPORT하는데 역시 안되었습니다.
4. 새 서버에서 임시로 테이블을 만들면 Collation이 UTF8으로 잡히는데...
문제는 에티터에서 UTF8으로 저장을 하고 IMPORT하는데 왜 안되느냐? 이거네요..ㅋㅋ 간단한 질문인데.. 넘 많이 주절거렸네요. 혹시 같은 어려움을 극복하신 분? 계세요....
댓글 전체
이 문제는 풀었습니다. 방법은 일단 데이타베이스를 만들고 난다음에 테이블작업에서 미리 디비어 기본 언어세팅을 UTF8으로 해 놓고, SQL로 모든 쿼리를 넣어서 하면 한글이 잘 입력되고,
리스트에서도 한글이 잘 보입니다.
근데 진짜 또 문제는요... 문제의 연속...-_-;;
그누보드로 보면(UTF8버전으로 하니깐 모든 한글이 다 깨져서 이 서버에서는 이거 지원하지는 않는 것같아 일반 그누보드 버전을 올렸습니다. ) 다른 한글은 모두 살아있습니다. 잘 보입니다. 근데 유독 디비에서 불러오는 텍스트들은 모두 깨져있습니다.
phpMyAdmin에서는 한글이 잘입력되었고 잘 보이는데요..
답변을 기다랍니다.
리스트에서도 한글이 잘 보입니다.
근데 진짜 또 문제는요... 문제의 연속...-_-;;
그누보드로 보면(UTF8버전으로 하니깐 모든 한글이 다 깨져서 이 서버에서는 이거 지원하지는 않는 것같아 일반 그누보드 버전을 올렸습니다. ) 다른 한글은 모두 살아있습니다. 잘 보입니다. 근데 유독 디비에서 불러오는 텍스트들은 모두 깨져있습니다.
phpMyAdmin에서는 한글이 잘입력되었고 잘 보이는데요..
답변을 기다랍니다.
DB 백업을 phpmyadmin 으로 받으셨나요 ?
그럼 에디터에서 utf-8 로 저장하기전에 일단 내부에 있는 euc-kr 을 전부 utf8 로 바꿔줘야 하지 않을까 싶네요...
예로 utf8 DB 를 백업 받으면 아래처럼 나옵니다.
-- phpMyAdmin SQL Dump
-- version 2.6.4-pl4
-- http://www.phpmyadmin.net
--
-- 호스트: 호스트명
-- 처리한 시간: 07-04-10 23:20
-- 서버 버전: 5.0.15
-- PHP 버전: 4.4.4
--
-- 데이터베이스: `디비명`
--
CREATE DATABASE `디비명` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE 디비명;
-- --------------------------------------------------------
--
-- 테이블 구조 `g4_auth`
--
CREATE TABLE `g4_auth` (
`mb_id` varchar(255) NOT NULL default '',
`au_menu` varchar(20) NOT NULL default '',
`au_auth` set('r','w','d') NOT NULL default '',
PRIMARY KEY (`mb_id`,`au_menu`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
이후 모든 곳에
ENGINE=MyISAM DEFAULT CHARSET=utf8;
것이 들어가 있더군요.
이곳에 euc-kr 이 들어가 있지는 않은지..
그럼 utf8 로 변환후 저장 해도 임포트 할때는 euc-kr 로 들어갑니다.
그럼 에디터에서 utf-8 로 저장하기전에 일단 내부에 있는 euc-kr 을 전부 utf8 로 바꿔줘야 하지 않을까 싶네요...
예로 utf8 DB 를 백업 받으면 아래처럼 나옵니다.
-- phpMyAdmin SQL Dump
-- version 2.6.4-pl4
-- http://www.phpmyadmin.net
--
-- 호스트: 호스트명
-- 처리한 시간: 07-04-10 23:20
-- 서버 버전: 5.0.15
-- PHP 버전: 4.4.4
--
-- 데이터베이스: `디비명`
--
CREATE DATABASE `디비명` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE 디비명;
-- --------------------------------------------------------
--
-- 테이블 구조 `g4_auth`
--
CREATE TABLE `g4_auth` (
`mb_id` varchar(255) NOT NULL default '',
`au_menu` varchar(20) NOT NULL default '',
`au_auth` set('r','w','d') NOT NULL default '',
PRIMARY KEY (`mb_id`,`au_menu`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
이후 모든 곳에
ENGINE=MyISAM DEFAULT CHARSET=utf8;
것이 들어가 있더군요.
이곳에 euc-kr 이 들어가 있지는 않은지..
그럼 utf8 로 변환후 저장 해도 임포트 할때는 euc-kr 로 들어갑니다.

>그누보드로 보면(UTF8버전으로 하니깐 모든 한글이 다 깨져서 이 서버에서는 이거 지원하지는 않는 것같아 일반 그누보드 버전을 올렸습니다. ) 다른 한글은 모두 살아있습니다. 잘 보입니다. 근데 유독 디비에서 불러오는 텍스트들은 모두 깨져있습니다.
lib / common.lib.php 파일의 1019라인부근을
// 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);
}
이렇게 바꿔주시고,
추가로 더 필요한것은 아래 링크를 참고하세요...^^
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=2497
lib / common.lib.php 파일의 1019라인부근을
// 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);
}
이렇게 바꿔주시고,
추가로 더 필요한것은 아래 링크를 참고하세요...^^
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=2497
쪽지를 보낼수가 없네요. ^^;; 이런일로 쪽지 받으시면 안되겠지만... 접속정보가 있어서...
하지만 문제를 해결하는게 더 중요하다 싶어서 말씀드립니다.
위에 말씀하신대로 모두해봤습니다. 아래의 코드를 바꿔가며 모두 지정하신 자리에 다 넣었습니다.
@mysql_query("set names utf8");
@mysql_query("set names utf-8");
@mysql_query("set names euc-kr");
@mysql_query("set names euckr");
화면에 약간의 변화가 있었지만, 한글이 완전히 깨져서 보이든지 아니면 ??만 보이든지...역시 한글은 보이지 않습니다.
하지만 여전히 phpMyAdmin에서는 한글이 잘 보이거든요.
아파치세팅은 euc-kr인것같고, utf-8로하면 한글 다 깨지거든요.
MySql은 utf8인것같습니다.
그누보드는 http://lovech.us/gnuboard4/ 이구요. 한글깨지는 것 볼 수 있구요. 당연히 디비에서만 호출되는 부분만.
그리고 phpMyAdmin은
http://lovech.us/phpMyAdmin4/ 입니다. 아이디와, 패스워드는요
ch2chwe_lovech / dbseotlr (한글로 윤대식)
한번 더 봐주시면 좋겠네요.
하지만 문제를 해결하는게 더 중요하다 싶어서 말씀드립니다.
위에 말씀하신대로 모두해봤습니다. 아래의 코드를 바꿔가며 모두 지정하신 자리에 다 넣었습니다.
@mysql_query("set names utf8");
@mysql_query("set names utf-8");
@mysql_query("set names euc-kr");
@mysql_query("set names euckr");
화면에 약간의 변화가 있었지만, 한글이 완전히 깨져서 보이든지 아니면 ??만 보이든지...역시 한글은 보이지 않습니다.
하지만 여전히 phpMyAdmin에서는 한글이 잘 보이거든요.
아파치세팅은 euc-kr인것같고, utf-8로하면 한글 다 깨지거든요.
MySql은 utf8인것같습니다.
그누보드는 http://lovech.us/gnuboard4/ 이구요. 한글깨지는 것 볼 수 있구요. 당연히 디비에서만 호출되는 부분만.
그리고 phpMyAdmin은
http://lovech.us/phpMyAdmin4/ 입니다. 아이디와, 패스워드는요
ch2chwe_lovech / dbseotlr (한글로 윤대식)
한번 더 봐주시면 좋겠네요.

저는 위에 알려드린 팁으로 같은 서버에 EUC-KR 버전 UTF-8 버전 두가지 다 잘 됩니다...
서버의 설정은 모두 UTF-8 이구요...
character set client utf8
character set connection utf8
character set database utf8
character set filesystem utf8
character set results utf8
character set server utf8
character set system utf8
collation connection utf8_general_ci
collation database utf8_general_ci
collation server utf8_general_ci
디비가 EUC-KR 일경우 그누보드도 EUC-KR 버전을,
디비가 UTF-8 일경우 그누보드도 UTF-8 버전을 사용 하는데,
두가지 버전 모두 이상없이 잘 됩니다..
참고 하세요...^^
서버의 설정은 모두 UTF-8 이구요...
character set client utf8
character set connection utf8
character set database utf8
character set filesystem utf8
character set results utf8
character set server utf8
character set system utf8
collation connection utf8_general_ci
collation database utf8_general_ci
collation server utf8_general_ci
디비가 EUC-KR 일경우 그누보드도 EUC-KR 버전을,
디비가 UTF-8 일경우 그누보드도 UTF-8 버전을 사용 하는데,
두가지 버전 모두 이상없이 잘 됩니다..
참고 하세요...^^

위의 디비 아이디 비번은 속히 지우세요...^^
서버의 설정이 참 묘하게도 이렇게 되어있더군요...^^
character set client utf8
(Global value) latin1
character set connection utf8
(Global value) latin1
character set database latin1
character set results utf8
(Global value) latin1
character set server latin1
character set system utf8
collation connection utf8_unicode_ci
(Global value) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci
설정이 저렇게 되어있으면 한글 사용에 애로사항이 많습니다...^^
디비가 latin1_swedish_ci 이니까,
그누보드를 EUC-KR 버전으로 사용하셔야 할듯 합니다. ... ^^
백업받은 자료도 latin1_swedish_ci 로 인코딩을 바꿔서 임포트하셔야 하구요..^^
그래도 잘 안된다면 링크해드린 팁에서
@mysql_query("set names utf8");
이걸
@mysql_query("set names latin1");
이렇게 하시든지 잘 응용해보세요...^^
서버의 설정이 참 묘하게도 이렇게 되어있더군요...^^
character set client utf8
(Global value) latin1
character set connection utf8
(Global value) latin1
character set database latin1
character set results utf8
(Global value) latin1
character set server latin1
character set system utf8
collation connection utf8_unicode_ci
(Global value) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci
설정이 저렇게 되어있으면 한글 사용에 애로사항이 많습니다...^^
디비가 latin1_swedish_ci 이니까,
그누보드를 EUC-KR 버전으로 사용하셔야 할듯 합니다. ... ^^
백업받은 자료도 latin1_swedish_ci 로 인코딩을 바꿔서 임포트하셔야 하구요..^^
그래도 잘 안된다면 링크해드린 팁에서
@mysql_query("set names utf8");
이걸
@mysql_query("set names latin1");
이렇게 하시든지 잘 응용해보세요...^^
도움 감사합니다. 덕분에 많은 것을 배웠습니다.
관련문서는
http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html
이구요.
저는 이 상황에서
@mysql_query("set names 'euckr'");
이것을 삽입하니깐 되었습니다.
관련문서는
http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html
이구요.
저는 이 상황에서
@mysql_query("set names 'euckr'");
이것을 삽입하니깐 되었습니다.
다음분을 위해서
phpMyAdmin - 2.8.0.1 이상버전을 사용하시면 테이블 작업에 언어세팅을 해주는 곳이 있습니다. 일반적으로 서버에서 세팅해주는 문자셑이 있지만 MySQL에서는 서버와 통신하는 곳에서 인위적으로 위에서 언급한 것처럼 컨버팅을 해줄 수 있습니다.
일단 데이타베이스를 만들었으면 아래와 같은 쿼리를 한번에 날리면 해당 디비의 기본문자셑이 정해집니다.
ALTER DATABASE `ch2chwe_ch` DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci
그럼 도움이 되셨기를 바라면서요...
제 SQL서버 세팅은 UTF8으로 되어있습니다만 euckr 으로 쓰고 있고 아무런 문제 없습니다.
물론 위에서 언급한 코드를 삽입해야합니다.
phpMyAdmin - 2.8.0.1 이상버전을 사용하시면 테이블 작업에 언어세팅을 해주는 곳이 있습니다. 일반적으로 서버에서 세팅해주는 문자셑이 있지만 MySQL에서는 서버와 통신하는 곳에서 인위적으로 위에서 언급한 것처럼 컨버팅을 해줄 수 있습니다.
일단 데이타베이스를 만들었으면 아래와 같은 쿼리를 한번에 날리면 해당 디비의 기본문자셑이 정해집니다.
ALTER DATABASE `ch2chwe_ch` DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci
그럼 도움이 되셨기를 바라면서요...
제 SQL서버 세팅은 UTF8으로 되어있습니다만 euckr 으로 쓰고 있고 아무런 문제 없습니다.
물론 위에서 언급한 코드를 삽입해야합니다.
PhotoFly님의 도움처럼 아래와 같이
@mysql_query("set names utf8");
를 삽입하니 한글이 보이기 시작합니다. 이제 세세한 확인작업을...
질문과 답변 모두 감사합니다. 많은 도움이 되었습니다.^^
@mysql_query("set names utf8");
를 삽입하니 한글이 보이기 시작합니다. 이제 세세한 확인작업을...
질문과 답변 모두 감사합니다. 많은 도움이 되었습니다.^^
아 고민하다가 한번에 해결봤습니다. 감사합니다.
photofly님..^^
photofly님..^^
