카테고리 없음
[php, mysql] DB에 insert 할때 한글이 깨질경우
xemaker
2017. 1. 22. 12:13
apmsetup 으로 apache,php,mysql 을 설치를 하고 php 프로그래밍을 하다보면 mysql DB를 사용할 경우가 생긴다.
그냥 아무생각 없이 테이블을 만들고 insert 쿼리를 보내면 보란듯이? 한글이 깨져있는 경우를 볼 수 있다.
왜그러지.. 하고 한참을 고민 했는데 이유를 발견했다.
그냥 보통 테이블을 만들때 아래와 같이 한다.
create table sc_sports(
gubun varchar(10)
,id varchar(20)
,time varchar(10)
,name1 varchar(50)
,name2 varchar(50)
,now varchar(20)
);
이렇게 그냥 일반적인 쿼리를 mysql 로 보내면 한글이 깨진다.
| gubun | id | time | name1 | name2 | now | |||
|---|---|---|---|---|---|---|---|---|
| hockey | 32324474 | 12:30 | ??? | ???? | 2017-01-22 12:41:50 |
왜냐하면
phpmyadmin으로 들어가서 방금 만든 테이블을 내보내기로 해서 봐보면
CREATE TABLE IF NOT EXISTS `sc_sports` (
`gubun` varchar(10) DEFAULT NULL,
`id` varchar(20) DEFAULT NULL,
`time` varchar(10) DEFAULT NULL,
`name1` varchar(50) DEFAULT NULL,
`name2` varchar(50) DEFAULT NULL,
`now` varchar(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
이런식으로 되어 있다.
DEFAULT CHARSET을 지정하지 않으면 기본값으로 latin1으로 된다.
그래서 한글이 깨진것이다.
그래서 아래와 같이 테이블을 만든다.
create table sc_sports(
gubun varchar(10)
,id varchar(20)
,time varchar(10)
,name1 varchar(50)
,name2 varchar(50)
,now varchar(20)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ENGINE=MyISAM DEFAULT CHARSET=utf8;
이것을 붙이면 된다.^^
| gubun | id | time | name1 | name2 | now | |||
|---|---|---|---|---|---|---|---|---|
| hockey | 32324474 | 12:30 | 산호세 | 콜로라도 | 2017-01-22 12:43:34 |