본문으로 바로가기
반응형

UTF-8에서 EUC-KR 페이지 요청 시 한글 깨짐처리


function fn_down(property, savedFileName, realFileName){
    
    if(document.getElementById("tempForm"!= null && document.getElementById("tempForm").length > -1document.getElementById("tempForm").remove(true);
    
    var tempHtml = document.createElement("form");
 
    tempHtml.id = "tempForm";
    tempHtml.method = "get";
    tempHtml.action = "URL주소";
    tempHtml.setAttribute("accept-charset""euc-kr");
    
    var input1 = document.createElement("input");
    var input2 = document.createElement("input");
    var input3 = document.createElement("input");
 
    input1.setAttribute("type""hidden");
    input1.setAttribute("name""property");
    input1.setAttribute("value", property);
 
    input2.setAttribute("type""hidden");
    input2.setAttribute("name""filename");
    input2.setAttribute("value", savedFileName);
 
    input3.setAttribute("type""hidden");
    input3.setAttribute("name""realname");
    input3.setAttribute("value", realFileName);
    
    tempHtml.appendChild(input1);
    tempHtml.appendChild(input2);
    tempHtml.appendChild(input3);
    
    document.getElementById("cont_inside").appendChild(tempHtml);
 
    var agent = navigator.userAgent.toLowerCase();
 
 
    if ( (navigator.appName == "Netscape" && navigator.userAgent.search("Trident"!= -1|| (agent.indexOf("msie"!= -1) ) {
 
        document.charset = "euc-kr";
 
    }
 
    tempHtml.submit();
}


글쓴이는 첨부파일을 해당 사이트를 통해 다운받아야하는데 UTF-8(운영사이트) 기준으로 한글이 인코딩이 되는 바람에
EUC-KR(다운받는 사이트)에서는 없는 파일로 나오는 문제가 있었다.

해당 문제를 JS로 form 태그를 생성하여 위와같이 가공한 후 전송처리하였다.

주의할 점은 form 태그의 속성 중 `accept-charset` 처리와 IE에서는 document.charset 처리를 별도로 해주어야 한다는 점이다.
(document.charset 같은 경우는 읽기 전용 속성이라고는 하는데 혹시몰라 추가해둔거다. 직접 바꾸려하면 안바뀌어지는게 보이긴함)

`accept-charset` 처리는 말그대로 받는 쪽에서의 언어세팅을 바꾼다는 소리다.

따라서 UTF-8에서 EUC-KR 사이트로 보낼 때 위처럼 설정하면 해결이 된다.


반응형