웹페이지에서 글자가 깨져서 나오는 경우
웹 페이지에서 글자가 깨져서 나오는 경우
체크포인트
- 알림
-
Encoding, Charset , Character Set 은 같은 의미로 봐도 된다.
- Web page file 확인
- .php, .html 의 파일 인코딩을 체크.
- 텍스트 에디터(or IDE) 등에서 파일의 인코딩이 올바르게 설정되어있는지 확인.
-
적혀있는 글자가 안 깨지는 상태에서의 인코딩 값을 확인해야한다.
- 한글의 경우 UTF-8(Unicode 기반) , CP949(MS949), EUC-KR(KSC5601) 정도로 되어있으며, UTF-8과 나머지 2개는 호환이 안된다!!!!
-
CP949는 EUC-KR의 확장형(상위호환)이다.
- Response header 내용 확인
- 브라우저의 디버깅 툴의 Network 항목에서 확인할 수 있다.
-
해당 페이지의 URL 통신 부분을 확인하면 된다.
- Content-Type: text/html; charset=UTF-8 처럼 보인다.
- charset=UTF-8 이 부분이 없을 수도 있다.
- charset=UTF-8 이 부분이 있다면 브라우저는 이 페이지를 지정된 charset 으로 처리한다.
-
web page의 encodig 과 지정된 charset 이 다르면, 글자가 깨인다!
- Meta tag 확인
- <meta charset=”utf-8”> //html 5
<meta http-equiv=”Content-Type” content=”text/html; charset=euc-kr” /> //html 5 이전 - Response header 에 charset 내용이 없을 경우 meta tag에 지정된 charset 을 확인하여 쓴다.
- web page의 encodig 과 지정된 charset 이 다르면, 글자가 깨인다!
-
meta tag는 response header의 선언보다 우선순위가 낮다.
- 웹 브라우저의 인코딩 확인
- 브라우저에서 인코딩을 임의로 설정한 경우 그 설정 값으로 페이지가 보이게 된다.
- 보통은 자동으로 되어있으며, 자동으로 인코딩을 처리한다.
-
자동으로 해서도 깨진다면, response header나 meta tag를 설정하라.
- 즉, web page의 encodig 과 브라우저에 지정된 인코딩이 다르면 글자가 깨진다.
-
우선순위 낮음
- DBMS의 charset 확인
- DBMS는 기본적으로 하나의 charset을 가진다.
-
특이한 경우로 MySQL은 DBMS, DATABASE, TABLE, COLUMN 각각에 charset 을 가질 수 있다.
- DB Client는 DBMS의 charset 과 같아야한다!
- 아니면 깨진다.(or 깨질 수 있다. 이상 동작 할 수도 있다.)
- DB client는 PHP같은 프로그램 언어가 될 수도 있고, SQLyog 같은 DB 관리 프로그램일 수도 있다.
-
즉, DBMS에 접속하는 것을 의미
- web page의 encodig 과 DBMS의 charset 이 다르면, 글자가 깨인다!
- Response header charset 과 DBMS의 charset 이 다르면, 글자가 깨인다!
- Meta tag charset 과 DBMS의 charset 이 다르면, 글자가 깨인다!
-
브라우저의 인코딩 과 DBMS의 charset 이 다르면, 글자가 깨인다!
- Font(글꼴) 지원 확인
- Font의 체크 우선순위가 가능 낮다!
-
보통은 unicode 기준으로 되어있으며, 대부분의 “글자”는 보이인다.
- Font의 버전에 따라 지원 글자의 수가 달라 안보이는 글자가 있을 수 있다.
-
emoji, 한자(한중일 별 특이 한자) 등에 지원이 다를 수 있다.
- HTML은 사용 할 Font가 지정이 가능하며, 그 Font에서 지원 안하는 경우를 위해 대체 Font도 지정이 가능하다.
- 입력 charset 이 unocde가 아니라도 내부에서 자동으로 unicode 기준으로 변경되어 보여지므로 charset과는 큰 관련이 없다.
요약
- Web page file 의 encoding 확인
- Response header 의 Content-Type: text/html; charset=UTF-8 확인
- Meta tag의 charset=”utf-8” 확인
-
웹 브라우저의 인코딩 확인
- DBMS의 charset 확인
위 목록에 모든 설정이 같은 값을 가져야 내용이 올바르게 보인다.**
**