ACTIVE SERVER PAGE > ajax 전송시 한글깨짐 (ANSI - ANSI 간에 한글전송 예제)
등록일 : 2017-07-04 18:27
조회수 : 98,170
ANSI 문자셋으로 된 사이트에서 ajax 전송시 한글이 깨지게 됩니다.
이 문제를 해결하기 위한 방법 입니다.
1. escape , unescape 사용하기
ANSI 로 저장된 ASP 파일
======== jquery 전송과 결과값 받을 때 ====================
$.ajax({
type: "POST",
url: "/include/getServerData.asp",
data: "dataKind=leagueList&key1="+escape(sportNM),
success: function(rValue) {
alert(rValue);
}
});
ANSI로 저장된 ASP 파일
========== 서버단 asp 파일에서 Request 할 때 ==============
<%response.charset = "euc-kr"%>
key1 = unescape(Request("key1"))
Response.Write strTemp
전송시 한글변수에 escape("한글") 과 같은 형태로 인코딩해 주면 됩니다.
asp 에서 데이터를 받을때는 unescape(Request("key1")) 로 받아 주면 끝났니다.
2. utf-8 을 지원하는 컴포넌트 사용하기
- utf-8을 지원하는 컴포넌트를 사용해서 넘어온 값을 받아주면 아주 간단히 해결할 수 있다.
- 본인의 경우 ABCUpload 컴포넌트를 사용하여서 간단히 처리한다.
- 페이지 상단에 jquery.form.js 파일을 인클루드 시킨다.
-
test1.asp
function Upload() {
var options = {
beforeSubmit: function () {
if ($('#board_fname1').val() == "") {
alert("업로드할 파일을 선택해 주세요!");
return false;
}
},
success: function (data) {
if (/(MSIE|Trident)/.test(navigator.userAgent)) {
// ie 일때 input[type=file] init.
$("#board_fname1").replaceWith( $("#board_fname1").clone(true) );
} else {
// other browser 일때 input[type=file] init.
$("#board_fname1").val("");
}
var status = data.status;
var fn1 = data.fn;
var goods_title = data.goods_title;
var goods_ment = data.goods_ment;
var tname = data.tname;
alert(status);
alert(fn1);
alert(tname);
}
},
error : function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
alert(msg);
},
url: "test_Upload.asp",
contentType: "multipart/form-data;charset=utf-8",
type: "post", /* get, post */
dataType: "json" /* xml, html, script, json */
};
$("#frm_board").ajaxSubmit(options);
}
form ID="frm_board" 값을 submit 하는 예제 이다. ENCTYPE="MULTIPART/FORM-DATA" 데이터타입으로 전송한다.
- 아래는 test_Upload.asp 파일 내용이다.
- abcupload 컴포넌트에서 값을 받을 때 UploadForm("tname")(1) 과 같은 형태로 받으면 된다.
- 배열형태로 전송이 되면 UploadForm("tname") 에는 ANSI 값이 UploadForm("tname")(1) 에는 UTF-8 값이 전송되는걸
확인할 수 있을 것이다.
set FSO = Server.CreateObject("Scripting.FileSystemObject")
set UploadForm = Server.CreateObject("ABCUpload4.XForm")
'UploadForm.CodePage = 65001
UploadForm.Overwrite = True '덮어쓰기 허용
UploadForm.AbsolutePath = True
UploadForm.MaxUploadSize = 1024*1024*20 '파일용량 (10M)
tname = WORD_CHANGE(UploadForm("tname")(1),100)
goods_title = WORD_CHANGE(UploadForm("goods_title")(1),100)
goods_ment = WORD_CHANGE(UploadForm("goods_ment")(1),100)
Response.Write "{""status"":""SUCCESS"",""fn"":""" & ok_filename & """,""tname"":""" & tname &""",""goods_title"":"""& goods_title &""",""goods_ment"":"""& goods_ment &"""}"
파일업로드 로직은 빠져 있다.