영카트4 설치후 에러-mysql에서 뽑아내는 한글이 사이트화면에서 깨짐 채택완료
영카트4 설치후 에러-mysql에서 뽑아내는 한글이 사이트화면에서 깨짐
영카트4 운영중인 사이트를
제 테스트 서버로 복사해온후 -사이트화면상에서 mysql 에서 뽑아내는 한글이 깨짐니다
해결법이 뭔가요? 이것때문에... 무지 고생하네요-_-;
(제 테스트 서버 정보)
show variables like 'c%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
+--------------------------+----------------------------+
원래 사이트(영카트4 설치 사이트-현재 그 사이트에서는 잘 운영되고 있는데...)
mysql> show variables like 'c%';
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | binary |
| character_set_connection | binary |
| character_set_database | euckr |
| character_set_filesystem | binary |
| character_set_results | binary |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/mysql/charsets/ |
| collation_connection | binary |
| collation_database | euckr_korean_ci |
| collation_server | utf8_general_ci |
| completion_type | 0 |
| concurrent_insert | 1 |
| connect_timeout | 10 |
+--------------------------+----------------------------------------+
14 rows in set (0.00 sec)
답변 4개
오랜만에 접속했는데 댓글이... ^^;;; 해결은 되셨나요?
phpmyadmin을 이용하거나 mysqldump를 할 때 DB는 텍스트 파일로 백업을 하게 됩니다.
에디트플러스로 sql 파일을 열어서 utf-8로 변환해서 저장하면 캐릭터셋은 문제가 없습니다.
변환해서 저장한 sql 파일로 다시 복구하면 utf-8로 저장 됩니다.
(ANSI -> UTF-8)
euc-kr에서 utf-8로 복구 할 때 제가 사용하는 방법입니다.
보여주신 새 MySQL 캐릭터셋에는 문제가 없는 거 같습니다.
collation_database | latin1_swedish_ci
이 항목은 제 서버같은 경우 utf8_general_ci로 되어 있네요. latin1_swedish_ci는 mysql 기본 설정이라 지금까지 신경 안 썼는데 지금보니 제 서버는 general로 되어 있네요.
텔넷 접속하셔서 mysql 들어가셔서 select 했을 때는 문제가 없나요?
만약 텔넷에서 한글이 깨진다면 서버 설정도 확인을 해 보셔야 할 듯 합니다.
아파치라면 http://ziumb.tistory.com/38">http://ziumb.tistory.com/38 이 포스팅이 도움이 되실지 모르겠습니다.
일단 텔넷으로 접속하셔서 테스트로 MySQL내에서 한글이 깨진 것인지 OS와 서버프로그램(아파치) 설정에서 한글이 깨지는 것인지 원인을 파악하는 게 우선 일 듯 합니다.
http://ziumb.tistory.com/36">http://ziumb.tistory.com/36 예전에 쓴 포스팅을 보니 제가 서버 셋팅 할 때 my.cnf 수정했던 것도 있네요. ^^
아래 부분에 [mysqld] ~ [mysqldump]까지 설정 부분이 있는데 참고가 되실지 모르겠네요.
영카트4라고 하시면 언제 버전인지 모르겠네요. 혹시 common.lib.php에서 sql 관련 함수에서
</p><p>// DB 선택</p><p>function sql_select_db($db, $connect)
{
global $g4;</p><p> if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 ");
else if (strtolower($g4['charset']) == 'euc-kr') @mysql_query(" set names euckr ");
return @mysql_select_db($db, $connect);
}</p><p>
이렇게 되어 있는지도 확인 해 보실 필요가 있겠네요.
답변에 대한 댓글 7개
phpmyadmin으로 봤을 때 한글이 깨진다면 euc-kr로 백업한 파일을 utf-8인 mysql에 복구했거나 혹은 그 반대, mysql은 utf-8인데 my.cnf에서는 euc-kr로 세팅 되었거나 설정이 없어 OS 셋팅을 따르는 경우가 아닌가 싶어요.
dump한 sql 파일을 플러스에디터로 열어서 utf로 변환하는 거 저는 추천합니다. ^^
그리고 mysql 설정에서는 utf-8로 했는데 복구하는 과정에서 개별 테이블 속성에 utf-8이 아닌 다른 캐릭터셋으로 되어 있다거나 등등. dump 할 때 옵션을 주면 create문에 끝이 " ) DEFAULT CHARSET=utf8; " 이런 문장이 들어가는데 여기서 캐릭터셋이 euc-kr로 되어 있다거나...
mysql 설정이 어찌 됐든 DB를 선택하기 전에 @mysql_query(" set names utf8 "); 이 명령은 utf8로 변환해서 읽어들이라는 의미이기 때문에 위의 명령이 잘 실행 됐는데도 한글이 깨진다면 my.cnf 설정을 바꿔보면 어떨까 합니다. ㅎㅎ
저도 크게 도움이 안 되겠지만 일단 개인적인 경험을 공유합니다.
잘 해결 되시기 바랍니다. ^^
sql문이 무척 긴데.. vi 로 열어보면... vi 로 연 화면만 정지상태... 돌아보리겠네요
===========================================
이것은 어떤 설정때문에 그런가요?
그냥... dump 해온 sql 파일을 vi 로 열어보니... 한글이 깨진다..
==================================================
이것은 또 어떤 설정때문에 그럽니까?
그런데 vi로 열면 한글이 깨진다는 건, vi는 리눅스 명령어이니까 리눅스 인코딩이 euc-kr인 듯 합니다.
그렇다해도 클라이언트에서 mysql을 읽어 올 때는 한글이 제대로 보여야 하는데 브라우저에서 볼 때 한글이 깨진다면 http://ziumb.tistory.com/36 여기서 my.cnf 하단에 mysql 설정이 있는데 여기서 mysql 캐릭터셋을 확인 해 볼 필요가 있는 거 같습니다.
혹시 그럴리는 없겠지만 만에 하나, 혹시라도 설치하신 영카트가 euc-kr은 아닌지, 저장한 .php나 .html 파일이 ansi로 저장 된 것은 아닌지 확인이 필요하겠네요. HTML 문서 상단에 메타태그에서 캐릭터셋이 utf-8로 되었는지 등등. 이런 경우는 mysql 뿐만 아니라 다른 한글도 깨져 보이겠죠? ^^;;;
mysql 내에서 한글이 잘 보여진다면 제 생각에는 이제 클라이언트를 점검해야 하지 않을까 그렇게 생각이 듭니다. ^^
아 그런데.. 다른 프로젝트는 이클립스 디버깅이 제대로 되는데
그 의뢰인님의 프로젝트만 이클립스 디버깅이 안먹어요 -_-;
댓글을 작성하려면 로그인이 필요합니다.
mysql을 최초 설치하면 latin1로 설치가 되기 때문에 이후 작업시에 한글이 깨지는 현상이 발생합니다.
아래처럼 my.cnf 파일을 수정해주고 재시동하면 한글 문제는 한결 편해집니다.
mysql utf-8 로 설정한다
# /etc/my.cnf
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] default-character-set = utf8 collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8
datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql
symbolic-links=0 innodb_file_per_table = 1 thread_concurrency = 8 query_cache_size = 32M thread_cache_size = 8 myisam_sort_buffer_size = 64M read_rnd_buffer_size = 8M read_buffer_size = 2M sort_buffer_size = 2M table_cache = 512 max_allowed_packet = 128M key_buffer = 384M open_files_limit = 4000
[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
댓글을 작성하려면 로그인이 필요합니다.
보통 euckr과 utf8 이외에는 국내에서 안쓰니까 두가지중 하나가 아닌건 이상한거죠.
옛날버전 mysql 은 기본설치로 하면 latin1_swedish_ci 로 설치가 됐었던거 같더라고요.
전 서버설치는 제일이 아니어서 잘 몰랐었습니다만 님과 같은 현상이 옛날 서버에서 종종 있었습니다.
답변에 대한 댓글 2개
결과는 똑같은데요... 제 테스트 db서버 설정도 바꿔야 합니까?
1. dump 떠올때....
mysqldump --default-character-set=euckr -u USERNAME -p DB_NAME > dump.sql
2. 집어넣을때(제 테스트 서버에는 해당 database 가 이미 생성되게 한후에 아래를 실행)
mysql --default-character-set=euckr -u 유저명 -p DB_NAME < dump.sql
댓글을 작성하려면 로그인이 필요합니다.
원래사이트에 캐릭터셋이 이상하게 셋팅되어있는겁니다.
그 사이트에서 생성하고 사용할때는 이상이 없지만 옮길때는 캐릭터셋이 달라지므로 이상해집니다.
DB에서 덤프를 뽑을때와 DB에 집어넣을때 캐릭터 셋을 지정해주면 해결될겁니다.
뽑을때
/usr/share/mysql/bin/mysqldump -uroot -p --default-character-set=euckr --add-drop-table databasename > dump.sql 집어넣을때
/usr/local/mysql/bin/mysql -uroot -p --default-character-set=euckr databasename < dump.sql
답변에 대한 댓글 2개
질문좀 ^^;
원래사이트에 캐릭터셋이 이상하게 세팅되었다고 하셨는데요
캐릭터셋이 많은데... 어느 캐릭터셋이 이상하게 세팅되었는지 좀 알려주세요^^;
그냥... 저는 아래처럼 했는데... 제가 하는 방식으로도 되죠?
뽑을때
/usr/share/mysql/bin/mysqldump -uroot -p --default-character-set=euckr --add-drop-table databasename > dump.sql
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
며칠간 진짜 고생 했어요
지금 읽어보고 해볼께요 -_-;