게시판 복사시 한글이 제목과 내용에서 ????로 뜨는 문제..

게시판 복사시 한글이 제목과 내용에서 ????로 뜨는 문제..

QA

게시판 복사시 한글이 제목과 내용에서 ????로 뜨는 문제..

본문

2042104003_1534998030.8032.jpg

게시판 생성으로 하면 한글도 정상적으로 보입니다.

근데 게시판 복사기능만하면 리스트와 뷰에서 새글을 썼을때 한글이 모두 ????로바뀌어버리고

 

구조+데이터를 복사해도

모두 ??????로 바뀌어버립니다.

 

게시판생성할땐 정상인것보니 게시판 스킨문제는 아닌것 같은데.

뭐가 문제인지 모르겠습니다...어제부터 검색해도 관련내용을 찾기가 힘듭니다..

 

 

추가 데이터 복사시 DB에서 테이블이 데이터정렬이 UTF8로 복사가안되고 latin1_swedish_ci라는 형식으로 복사가됩니다

이 질문에 댓글 쓰기 :

답변 6

아 죄송요 게시글 복사로 알았네요...

 

/adm/board_copy_update.php 파일 인코딩 확인해보시고 UTF-8 인코딩 맞다면 

 

해당 파일 여셔서 게시판복사시 테이블이 생성되는 쿼리문이 있을꺼에요...

 

해당부분에 쿼리실행전에 echo 로 쿼리문 찍어보세요..

 

ex)

// 게시판 테이블 생성
$sql = get_table_define($g5['write_prefix'] . $bo_table);
$sql = str_replace($g5['write_prefix'] . $bo_table, $g5['write_prefix'] . $target_table, $sql);
echo $sql;exit;
sql_query($sql, false);

 

출력된 쿼리문 하단에 DEFAULT CHARSET=utf8 이 나오는지 확인해보세요....

CREATE TABLE g4_write_cable ( wr_id int(11) NOT NULL auto_increment, wr_num int(11) DEFAULT '0' NOT NULL, wr_reply varchar(10) NOT NULL, wr_parent int(11) DEFAULT '0' NOT NULL, wr_is_comment tinyint(4) DEFAULT '0' NOT NULL, wr_comment int(11) DEFAULT '0' NOT NULL, wr_comment_reply varchar(5) NOT NULL, ca_name varchar(255) NOT NULL, wr_option set('html1','html2','secret','mail') NOT NULL, wr_link1 text NOT NULL, wr_link2 text NOT NULL, wr_link1_hit int(11) DEFAULT '0' NOT NULL, wr_link2_hit int(11) DEFAULT '0' NOT NULL, wr_trackback varchar(255) NOT NULL, wr_hit int(11) DEFAULT '0' NOT NULL, wr_good int(11) DEFAULT '0' NOT NULL, wr_nogood int(11) DEFAULT '0' NOT NULL, mb_id varchar(255) NOT NULL, wr_password varchar(255) NOT NULL, wr_name varchar(255) NOT NULL, wr_email varchar(255) NOT NULL, wr_homepage varchar(255) NOT NULL, wr_datetime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, wr_last varchar(19) NOT NULL, wr_ip varchar(255) NOT NULL, wr_1 varchar(255) NOT NULL, wr_2 varchar(255) NOT NULL, wr_3 varchar(255) NOT NULL, wr_4 varchar(255) NOT NULL, wr_5 varchar(255) NOT NULL, wr_6 varchar(255) NOT NULL, wr_7 varchar(255) NOT NULL, wr_8 varchar(255) NOT NULL, wr_9 varchar(255) NOT NULL, wr_10 varchar(255) NOT NULL, PRIMARY KEY (wr_id), KEY wr_num_reply_parent (wr_num, wr_reply, wr_parent), KEY wr_is_comment (wr_is_comment, wr_id) )

일단 G5가 아니고 G4부분이고

하단에 DEFAULT CHARSET=utf8 문구는 아예 표시되지 않습니다 

 

이번에는 게시판 추가시 게시판테이블 생성하는 쿼리문을 echo로 출력해서 두 쿼리문은 비교해보세요..

신규게시판 생성하면 문제가 없다고 하셨으니 생성쿼리문과 비교해보세고 게시판 복사용 쿼리문을 생성쿼리문 형식으로 수정하시면 될꺼요.

/adm/board_form_update.php

그누보드5의 경우에는 /admin/sql_write.sql  을 가져다 씁니다.

쿼리문 수정까지 끝나시면 기존에 쿼리문 찍었던 echo 부분 제거하시고 테스트 해보시면 될꺼에요

CREATE TABLE `__TABLE_NAME__` ( `wr_id` int(11) NOT NULL AUTO_INCREMENT, `wr_num` int(11) NOT NULL DEFAULT '0', `wr_reply` varchar(10) NOT NULL DEFAULT '', `wr_parent` int(11) NOT NULL DEFAULT '0', `wr_is_comment` tinyint(4) NOT NULL DEFAULT '0', `wr_comment` int(11) NOT NULL DEFAULT '0', `wr_comment_reply` varchar(5) NOT NULL DEFAULT '', `ca_name` varchar(255) NOT NULL DEFAULT '', `wr_option` set('html1','html2','secret','mail') NOT NULL DEFAULT '', `wr_subject` varchar(255) NOT NULL DEFAULT '', `wr_content` text NOT NULL, `wr_link1` text NOT NULL, `wr_link2` text NOT NULL, `wr_link1_hit` int(11) NOT NULL DEFAULT '0', `wr_link2_hit` int(11) NOT NULL DEFAULT '0', `wr_trackback` varchar(255) NOT NULL DEFAULT '', `wr_hit` int(11) NOT NULL DEFAULT '0', `wr_good` int(11) NOT NULL DEFAULT '0', `wr_nogood` int(11) NOT NULL DEFAULT '0', `mb_id` varchar(255) NOT NULL DEFAULT '', `wr_password` varchar(255) NOT NULL DEFAULT '', `wr_name` varchar(255) NOT NULL DEFAULT '', `wr_email` varchar(255) NOT NULL DEFAULT '', `wr_homepage` varchar(255) NOT NULL DEFAULT '', `wr_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `wr_last` varchar(19) NOT NULL DEFAULT '', `wr_ip` varchar(255) NOT NULL DEFAULT '', `wr_1` varchar(255) NOT NULL DEFAULT '', `wr_2` varchar(255) NOT NULL DEFAULT '', `wr_3` varchar(255) NOT NULL DEFAULT '', `wr_4` varchar(255) NOT NULL DEFAULT '', `wr_5` varchar(255) NOT NULL DEFAULT '', `wr_6` varchar(255) NOT NULL DEFAULT '', `wr_7` varchar(255) NOT NULL DEFAULT '', `wr_8` varchar(255) NOT NULL DEFAULT '', `wr_9` varchar(255) NOT NULL DEFAULT '', `wr_10` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`wr_id`), KEY `wr_num_reply_parent` (`wr_num`,`wr_reply`,`wr_parent`), KEY `wr_is_comment` (`wr_is_comment`,`wr_id`) ) DEFAULT CHARSET=utf8;

게시글생성인 이부분이 나옵니다

 

보니 게시판생성에는 $file = file("./sql_write.sql");라는 부분이있군요

근데 게시판복사는 그런것이 없습니다.

sql_write.sql 파일을 보니 DEFAULT가 utf8로 잘잡혀있습니다.

근데 게시판복사에는 sql문을 복사해오는것이 아닌데 어떻게

게시판 생성것의 sql문을 적용을 하는지요?

 

// 게시판 테이블 생성
    $file = file("./sql_write.sql");
    $sql = implode($file, "\n");
    $create_table = $g4[write_prefix] . $bo_table;
    $sql = str_replace($g4[write_prefix] . $bo_table, $g4[write_prefix] . $target_table, $sql);
sql_query($sql);

 

이런식으로 변경해봤으나 안됩니다 ㅜㅜ

안된다기보다 복사는되는데 ???????로 나오는현상이 같습니다.

 

등록용 구문으로 수정하시지 마시고

기존  /adm/board_copy_update.php 파일의 해당부분에서

// 게시판 테이블 생성
$sql = get_table_define($g4['write_prefix'] . $bo_table);
$sql = str_replace($g4['write_prefix'] . $bo_table, $g4['write_prefix'] . $target_table, $sql);

그누4면 이렇게 되어있겠죠...

1, 함수 수정하는 방식
get_table_define 함수부분을 /lib/common.lib.php 파일에서 찾으신후 쿼리문이 나오는 마지막 부분에 DEFAULT CHARSET=utf8 를 추가하는 방법

2. 쿼리문에 직접 추가하는 방식
$sql = get_table_define($g4['write_prefix'] . $bo_table);
$sql .= " DEFAULT CHARSET=utf8";
$sql = str_replace($g4['write_prefix'] . $bo_table, $g4['write_prefix'] . $target_table, $sql);

편하신 방법으로 둘중에 하나로 수정하시면 됩니다.

대단하십니다

2번의 방법으로 했더니 완벽하게 복사가 잘됩니다

감사합니다.

제가 SQL언어에 대한 이해가 부족해서 쉽게 수정하지 못한것 같습니다.

밥까지 떠먹여달라고 징징대서 죄송합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,682 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT