Javascript로 코드파일 다운로드 구현시 인코딩 설정하기(실패)

최근에 디자인팀을 위해 컴포넌트 형태로 항목을 추가하고 그 결과를 최종 코드로 HTML 형태로 다운로드 받을 수 있도록 구현한게 있다. 제작 자체를 UTF-8 인코딩으로 했기 때문에 다운로드된 HTML파일도 UTF-8 인코딩인데 확인해보니 어떤 경우는 EUC-KR로 인코딩이 되어 나와야되는 상황도 있었다. (차라리 일괄되었으면….)

var download = function(filename, content) {
  var dummy = doc.createElement('a');

  /* 생략 */

  dummy.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content));
  dummy.setAttribute('download', filename);

  var e = doc.createEvent('MouseEvents');
  e.initEvent('click', true, true);
  dummy.dispatchEvent(e);
};

해당 다운로드 부분이 이런식으로 트리거 형태로 작성한 코드였는데 charseteuc-kr로 바꾸면 되지 않을까 하는 큰 오해를 했다.
서치해본 결과 iconv 등의 이용도 결국 서버단을 거쳐야해서 안될거 같다는 생각을 하는 와중에 여러가지 시도를 해보긴 했는데 결국 클라이언트단에서만 어떻게 할 수 있는게 아닌 것 같다.

애초에 서버단을 거칠거였으면 이 프로젝트 자체가 이렇게 만들께 아니었어서 고민이 깊다 다운로드 받으면 인코딩 변경법을 알려주는 가이드를 넣는 것으로 마무리 지었다.

덧붙임

디자이너를 위한 작업이다보니 HTML 파일 수정할 때 에디터 주로 뭐 쓰는지 확인하니 드림위버라고 하여 드림위버에서 인코딩 변경하는 방법을 찾아봤는데 엄청 어렵다.

드림위버에서 인코딩 변경하기

  1. 파일을 열고 상단 메뉴에 Window - Properties 체크 (이미 되어있으면 할 필요 없음)
  2. Properties 윈도우 하단 중간쯤 \’Page Properties…\’ 클릭’
  3. Title/Encoding 선택 후 Encoding 에서 유니코드(UTF-8)을 한국어로 변경 후 저장

그래서 이것만 가이드하려다 메모장으로 인코딩 변경하는 것도 덧붙였다.