물음표로 나오는 한글 깨짐 문제는 이전에 해결법을 작성해놓았다.


서버에서 물음표 출력 시 해결방법


ㅎㅏ지만, 물음표가 아니라 글자가 아예 깨져나오는 현상이 있다면,



이렇게 외계어가 나온다면, 아파치 설정이 잘못된 것이다.


$

 nano /etc/apache2/conf-available/charset.conf


으로 수정 모드를 띄운다음에

#AddDefaultCharset UTF-8

의 앞에 #을 제거하자(#은 주석이다)

그 다음 저장하고 나온 뒤, service apache2 restart로 리스타트를 하면,

정상적으로 나오게 된다.


끝-

Posted by sungho88
,

아파치에 업로드시킨 후, 웹 브라우저로 접속을 해보았다.


그런데 mysql DB로부터 데이터를 읽어오는데 문제가 발생했다.


영어나 숫자로 된 게시물은 정상적으로 출력되는 반면에,


한글로 된 게시물은 비정상적으로 출력되었다.


즉, 한글을 인식하지 못하여 물음표로만 출력되는 것이었다.


 

뭔가 인코딩 문제라 생각이 들어 구글을 통해 열심히 찾아보았다.


지금 사용하고 있는 우분투 버전은 16.04 최신 버전인데 이것때문에 그럴까?


그것은 아니었다. mysql에 설정이 latin1이 기본적으로 설정되어 있기 때문이라는것을 알게 되었다.


이것을 어떻게 utf8로 변경할까?


이 고마운 블로그


에서 해답을 알 수 있었다.


그 전에,


많은 블로그들이 my.cnf를 고치면 된다고들 했다. (설치 경로 : /etc/mysql)


하지만, 버전이 올라가면서 이 파일에서는 그냥 includedir로 다른 파일을 불러들이는 용도로 변했다.


그래서, 두 가지을 각각 찾아가서 열어보았다.


그 결과 밑에 있는 경로 /etc/mysql/mysql.conf.d/에 있는 mysql.cnf가 중요한 파일이다.


이 파일을 열면


$ sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

또는 


$nano /etc/mysql/my.conf


뭔가 샵#이 붙은 내용이 줄줄이 나오는데, 그 중에서 



[mysqld] 이 부분을 찾아서, 맨 마지막에 캐릭터셋을 지정하주면 된다.


character-set-client-handshake=FALSE 

collation-server=utf8_general_ci 

character-set-server=utf8


그 다음 재부팅~


sudo /etc/init.d/mysql restart


이렇게 복붙하면 utf8로 설정이 되어, 정상적으로 한글이 나오게 된다.

짜잔.






//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////


블로그에 적어놓은 것을 잊고, 한참을 다시 검색하였다.

이번에는 우분투14.04에서 환경을 설정하는 중인데 우분투16.04와 몇 가지 차이점이 있다.


위에서 언급한것과 같이 14.04에서는 


/etc/mysql/my.conf에서 직접 수정이 가능하다(16.04의 경우 Include의 기능만 갖는다)


다음과 같이 


[client]에도,

default-character-set=utf8  추가


[mysqld]에는 이렇게, 여러개   추가

character-set-server=utf8

collation-server=utf8_general_ci

init_connect=SET collation_connection=utf8_general_ci

init_connect=SET NAMES utf8


[mysqldump]에도,

default-character-set = utf8  추가


[mysql]에도, 

default-character-set=utf8  추가


해주면 mysql 설정이 모두 utf-8로 변경이 되었다는 것을 mysql> status를 통해 볼 수 있다.

하지만, 사이트는 여전히... 물음표다. Mysql은 모두 변경되었는데...무엇이 문제일까?

음... 


한참을 검색하다가 많이 눈에 익은 사이트에 들어와서 정답을 알게 되었다.

그 사이트가 바로 내 블로그다ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ


내가 적어두고 다른데가서 삽질하다니.... 삽질 안 하려고 적어두고는 다른데가서 삽질을...


내가 입력한것과 이전에 작성해둔 코드와 비교하니 한 가지만 없었다.

바로바로바로바로


character-set-client-handshake=FALSE 


이것!!!!!!!!!!!!

이것을 


[mysqld] 하단에 넣어주면~?

???????????

?????????????????

????????????????????????


물음표를 좋아하던 사이트가 !

한글로 변환되어 보여지는것을 알 수있다.


정리.

[mysqld]에는 총 5개를 추가해준다.


character-set-client-handshake=FALSE

character-set-server=utf8

collation-server=utf8_general_ci

init_connect=SET collation_connection=utf8_general_ci

init_connect=SET NAMES utf8


Posted by sungho88
,