서버 이전 글자 깨집니다.(euckr→utf8) 정보
서버 이전 글자 깨집니다.(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이랑 케릭셋의 차이가 무엇인가요??
댓글 전체
1. 디비를 euckr 로 뽑으셧다면 메모장에서 여신후에 utf-8로 저장하셔야 합니다.
sql 안에 있는 euckr문자를 전부 utf-8로 변경하셔야 합니다.
collation 지정하지 않으시면 됩니다. 하셔야 한다면 utf8_general_ci 로 하셔야 합니다.
2. charset은 보통 잘 아시는 데이터 저장 방식입니다.
collation은 정렬 방식입니다. 또한 검색방식입니다.
a > b > c 이런순으로 되는건 collation을 따라 갑니다. 보통 이것때문에 머리 쓰지는 않구요.
ㄱ > 가 > 강 > ㄴ > 농 ... 하여간 이러한 순서를 정할때나
갊 = 갊 을 구할때 쓰는게 collation 입니다. 더 깊은 부분은 다른분이..
utf8을 지원하는 디비라면
서버 언어셋 > 디비 언어셋 > 테이블 언어셋 > 칼럼 언어셋 별로 지정할 수 있기 때문에
냅두면 서버 언어셋 따라 갑니다.
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'
_____________________________________________________________________________
말씀대로 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'
_____________________________________________________________________________
위에 오류를 대충 영어보니 케릭셋인 euckr을 콜레이션인 utf8_general_ci로 바꿔서 생긴오류 같은데 저는 드림위버에서 ecukr_bin을 utf8_general_ci로 바꾸는 자동 바꾸기를 했는데 드림위버가 잘못된건가요???
characterset: euckr-> utf-8
collation : euckr_bin -> utf8_general_ci
입니다.
두개가 맞게 바껴야 합니다.
먼저 euckr_bin 을 바꾸고
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'
제가 초보라 계속 물어보게 되네요 .. 죄송합니다.. .. 아 이거 포인트로 감사한 마음을 표현(?) 하고 싶지만 질문게시판에 포인트 주기가 사라졌네요 .. ㅠㅠ
오류
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'
제가 초보라 계속 물어보게 되네요 .. 죄송합니다.. .. 아 이거 포인트로 감사한 마음을 표현(?) 하고 싶지만 질문게시판에 포인트 주기가 사라졌네요 .. ㅠㅠ
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를 걸어 주시면 되빈다. 이부분까지 하면 안좋을듯 합니다.
방문자를 카운팅 하는 곳인데, 동일한 내용이 들어가 있네요.
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를 걸어 주시면 되빈다. 이부분까지 하면 안좋을듯 합니다.