서버 이전 글자 깨집니다.(euckr→utf8)
오류 주소 : http://rud8534.sqs.kr:8080/
안녕하세요? EUC-KR 서버에서 UTF-8만 지원되는 서버로 옮겨 제 sql파일에 g4_auth 부분의 charset은utf8로, collation을 utf_unicode_ci 로 했습니다. 그렜더니.. 위에 링크처럼 제목과 매뉴는 잘 출력되는데, 본문과 댓글이 이상하게 출력됩니다. ㅠㅠ 세로쓴 글은 잘 되던데;; 이유가 뭘까요??
아 그리고 죄송한데 collation이랑 케릭셋의 차이가 무엇인가요??
안녕하세요? EUC-KR 서버에서 UTF-8만 지원되는 서버로 옮겨 제 sql파일에 g4_auth 부분의 charset은utf8로, collation을 utf_unicode_ci 로 했습니다. 그렜더니.. 위에 링크처럼 제목과 매뉴는 잘 출력되는데, 본문과 댓글이 이상하게 출력됩니다. ㅠㅠ 세로쓴 글은 잘 되던데;; 이유가 뭘까요??
아 그리고 죄송한데 collation이랑 케릭셋의 차이가 무엇인가요??
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 6개
sql 안에 있는 euckr문자를 전부 utf-8로 변경하셔야 합니다.
collation 지정하지 않으시면 됩니다. 하셔야 한다면 utf8_general_ci 로 하셔야 합니다.
2. charset은 보통 잘 아시는 데이터 저장 방식입니다.
collation은 정렬 방식입니다. 또한 검색방식입니다.
a > b > c 이런순으로 되는건 collation을 따라 갑니다. 보통 이것때문에 머리 쓰지는 않구요.
ㄱ > 가 > 강 > ㄴ > 농 ... 하여간 이러한 순서를 정할때나
갊 = 갊 을 구할때 쓰는게 collation 입니다. 더 깊은 부분은 다른분이..
utf8을 지원하는 디비라면
서버 언어셋 > 디비 언어셋 > 테이블 언어셋 > 칼럼 언어셋 별로 지정할 수 있기 때문에
냅두면 서버 언어셋 따라 갑니다.
말씀대로 euckr_bin 으로 되어있던 3000여개 정도의 collation을 utf8_general_ci로 바꾸니 오류가 납니다 ㅠㅠ
SQL 질의:
-- -------------------------------------------------------- -- -- 테이블 구조 `g4_board` -- CREATE TABLE IF NOT EXISTS `g4_board` ( `bo_table` varchar(20) COLLATE utf8_general_ci NOT NULL DEFAULT '', `gr_id` varchar(255) COLLATE utf8_general_ci NOT NULL DEFAULT '', `bo_subject` varchar(255) COLLATE utf8_general_ci NOT NULL DEFAULT '', `bo_admin` varchar(255) COLLATE utf8_general_ci NOT NULL DEFAULT '', `bo_list_level` tinyint(4) NOT NULL DEFAULT '0', `bo_read_level` tinyint(4) NOT NULL DEFAULT '0', `bo_write_level` tinyint(4) NOT NULL DEFAULT '0', `bo_reply_level` tinyint(4) NOT NULL DEFAULT '0', `bo_comment_level` tinyint(4) NOT NULL DEFAULT '0', `bo_upload_level` tinyint(4) NOT NULL DEFAULT '0', `bo_download_level` tinyint(4) NOT NULL DEFAULT '0', `bo_html_level` tinyint(4) NOT NULL DEFAULT '0', `bo_link_level` tinyint(4) NOT NULL DEFAULT '0', `bo_trackback_level` tinyint(4) NOT NULL DEFAULT '0', `bo_count_delete` tinyint([...]
MySQL 메시지:
#1253 - COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'euckr'
_____________________________________________________________________________
collation : euckr_bin -> utf8_general_ci
입니다.
두개가 맞게 바껴야 합니다.
먼저 euckr_bin 을 바꾸고
euckr 을 바꿔야 할듯합니다.
오류
SQL 질의:
-- -- 테이블의 덤프 데이터 `mw_board_visit` -- INSERT INTO `mw_board_visit` (`bv_date`, `gr_id`, `bo_table`, `bv_count`) VALUES ('2010-05-19', 'G05', 'B64', 1), ('2010-05-19', 'G01', 'B01', 1), ('2010-05-19', 'G01', 'B05', 1), ('2010-05-24', 'help', 'notice', 1), ('2010-05-24', 'G01', 'B01', 1), ('2010-05-24', 'help', 'ad', 1), ('2010-05-24', 'G05', 'B68', 1), ('2010-05-24', 'G01', 'B04', 1), ('2010-05-24', 'G04', 'B46', 1), ('2010-05-26', 'help', 'ad', 1), ('2010-05-26', 'club', 'cb_clubhouse', 1), ('2010-05-27', 'club', 'cb_clubhouse', 1), ('2010-05-27', 'club', 'cb_right', 2), ('2010-05-28', 'G01', 'B01', 2), ('2010-05-28', 'club', 'cb_danetproject', 1), ('2010-05-28', 'G01', 'B03', 1), ('2010-05-29', 'G01', 'B03', 1), ('2010-05-29', 'help', 'ad', 1), ('2010-05-29', 'G03', 'B31', 1), ('2010-05-29', 'G03', 'B32', 1), ('2010-05-29', 'G03', 'B33', 1), ('2010-05-29', 'G03', 'B43', 1), ('2010-05-29', 'G01', 'B11', 2), ('2010-05-29', 'G01', 'B09',[...]
MySQL 메시지:
#1062 - 중복된 입력 값 '2010-06-02-G01-C_diss_any': key 'PRIMARY'
제가 초보라 계속 물어보게 되네요 .. 죄송합니다.. .. 아 이거 포인트로 감사한 마음을 표현(?) 하고 싶지만 질문게시판에 포인트 주기가 사라졌네요 .. ㅠㅠ
방문자를 카운팅 하는 곳인데, 동일한 내용이 들어가 있네요.
4가지 중에서 편한것을 선택 하시면 됩니다.
1. ('2010-05-29', 'G01', 'B11', 2),
이런식으로 되어 있는 부분에서 해당 데이터를 삭제 하셔도 됩니다.
2. 아니면 기존의 방문 기록이 필요하지 않다면,
insert into 구문자체를 삭제 하셔도 됩니다. 기존 방문데이터는 사라지게 됩니다.
3. create table if not exists ... 에서 primary 라는 단어를 삭제 하시면 됩니다.
또는 primay key(), 이 라인을 삭제 하신후에 phpmyadmin에서 다시 primay를 설정하시면 됩니다.
이때에도 동일하게 에러가 날텐데 그 에러 나는 데이터를 삭제 하시면 됩니다.
4. primay를 삭제 하시고 디비를 밀어 넣고, index를 걸어 주시면 되빈다. 이부분까지 하면 안좋을듯 합니다.