Knowledge Map

파일 인코딩 변환시의 주의사항 본문

WEB

파일 인코딩 변환시의 주의사항

2016. 7. 6. 11:35

어제 다시 DB를 latin1으로 변환한 다음에 UTF-8로 되어 있는 모든 HTML 에 

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  추가


많은 수의 php 파일에는 

header('Content-Type: text/html; charset=UTF-8');   추가


하고는 실행을 시켜보았는데 제대로 되지를 않았다.


그래서 latin1이라서 euckr이 아닌 다른 것을 처리하는건가 싶어서 iconv에다가 

ISO 들과 CP 들을 열 몇개를 바꿔가면서 붙여보았는데 마찬가지로 안되었다.


혹시나 DB에 한글이 깨져서 들어간 것은 아닐까 싶어서 다시 mysqldump를 시도해서 DB 및 mysql를 전부다 삭제하고 다시 설치 및 셋팅도 해보았었다.


물론 그 와중에 mysql 4.2 이상에서는 기본 서버셋팅이 UTF-8로 되어있기 때문에 EUC-KR, Latin1으로 덤프를 뜨고싶다면

mysqldump -u root -p dbname --default-character-set latin1 > dump.sql

이런식으로 default-character-set을 붙여줘야 한다는 것을 알게 되기는 했다만 여하튼 이것도 문제가 아니었다.


그렇다면 무엇이 문제였을까?


바로 PHP파일 인코딩의 문제였다.


EUC-kr로 인코딩 되어 있는 php파일을 UTF-8로 셋팅되어 있는 에디터로 열어 보면 한글이 깨져서 보인다.

그런데 이러한 상황에서 그대로 저장하게 되면 파일은 내부 내용이 깨진 상태로 UTF-8로 저장된다.

이것에 대해서 한글만 깨지고 영어는 안 깨져서 별 문제 없겠지 라고 생각을 했었는데 실은 그게 아니었던 모양이다.


이 문제를 못찾아서 정말 얼마나 많이 헤맷는지 모르겠다.

문제가 파악되자 해당 파일의 백업 파일을 note++ 내에 내장된 인코딩 변환 기능을 사용해서 안전하게 변환시킨 다음 저장하고 실행을 시켰더니 제대로 실행되었다.


파일의 인코딩을 변환시켜야 할때에는 반드시 주의를 기울이고 대충 변환하지 말자. 


'WEB' 카테고리의 다른 글

Visual Studio Code FTP 플러그인  (0) 2016.07.27
일부모바일 a태그 문제  (0) 2016.07.11
ie8 에서의 중앙 정렬  (0) 2016.06.30
RESTful  (0) 2016.06.20
브라우저 감지  (0) 2016.04.19
Comments