희망에 부푼 이 뛰는 가슴으로 못할 것 없다. 세상을 밝게 사람들에게 행복을!!
-- asp.net 버전 --
먼저,
캐릭터 셋 변경"ks_c_5601-1987"나 "euc-kr" 둘 중에 택일
Response.Charset = "ks_c_5601-1987";
메타태그의 컨텐트 타입 변경
Response.Write("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-kr\">");
Web.config 파일
전역화 설정 부분에 있는 responseEncoding을 다음과 같이 변경
responseEncoding="euc-kr"
(utf-8 로 되어있는부분 다 바꿔주던지.. 맘대로 하시길.. ㅡㅡ;)
이정도만 해주면 한글 깨짐 현상을 없앨 수 있다.
이렇게 했는데 안될시..
다음 부분을 소스에 추가한다.
Response.Buffer = true; Response.ClearContent();Response.ClearHeaders(); -- 이렇게 하면 깨끗해지나~~
convStr = System.Text.RegularExpressions.Regex.Replace(convStr, " ", " ");
-- convStr 은 유니코드 문자인데(String), 리플레이스 부분 보면   를 공백으로 처리해준다.
그리고, Response.Write(convStr); 을 추가한다.
-- 전체 소스 --
#region 엑셀 만들기 //Response.Buffer = true; //Response.Clear(); //Response.ClearContent(); //Response.ClearHeaders();
string fileName = DateTime.Now.ToShortDateString().Replace("-","")+"테스트.xls";
Response.ContentType = "application/vnd.ms-excel";
//컨텐츠 헤더 설정
Response.AddHeader("Content-Disposition","attachment;fileName="+ Server.UrlPathEncode(fileName));
//한글로 캐릭터 셋 설정..
Response.Charset = "euc-kr";
//ViewState 사용 안함
dgSearchList.EnableViewState = false; //dgSearchList는 데이터 그리드
//쓰기 객체 생성
System.IO.StringWriter sw = new System.IO.StringWriter();
//html쓰기 객체 생성
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
//데이터 그리드의 내용을 html로 쓴다.
//내용물은 테이블<TABLE>..</TABLE> 이런 식이 된다.
dgSearchList.RenderControl(hw); String convStr = sw.ToString(); //convStr = System.Text.RegularExpressions.Regex.Replace(convStr, " ", " ");
String title = "<table border='1'><tr align='center' height='30'><td>test</td><td>test1</td></tr>"; Response.Write("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-kr\">"); Response.Write(title+convStr+"</table>"); //Response.Write(convStr);
//응답객체 종료
Response.End(); #endregion
위 소스에서 주석 처리한 부분들 보면,
안될경우에 추가해주면 된다던 부분들이다.. 난 추가 없이도 한글 안깨지고 잘 됐어~ ^^;
데이터 그리드나 리피터의 출력 결과물들을 엑셀로 출력할시 한글 깨짐 현상 방지
-- asp.net 버전 --
먼저,
캐릭터 셋 변경
"ks_c_5601-1987"나 "euc-kr" 둘 중에 택일
Response.Charset = "ks_c_5601-1987";
메타태그의 컨텐트 타입 변경
Response.Write("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-kr\">");
Web.config 파일
전역화 설정 부분에 있는 responseEncoding을 다음과 같이 변경
responseEncoding="euc-kr"
(utf-8 로 되어있는부분 다 바꿔주던지.. 맘대로 하시길.. ㅡㅡ;)
이정도만 해주면 한글 깨짐 현상을 없앨 수 있다.
이렇게 했는데 안될시..
다음 부분을 소스에 추가한다.
Response.Buffer = true;
Response.ClearContent();
Response.ClearHeaders(); -- 이렇게 하면 깨끗해지나~~
convStr = System.Text.RegularExpressions.Regex.Replace(convStr, " ", " ");
-- convStr 은 유니코드 문자인데(String), 리플레이스 부분 보면   를 공백으로 처리해준다.
그리고, Response.Write(convStr); 을 추가한다.
-- 전체 소스 --
#region 엑셀 만들기
//Response.Buffer = true;
//Response.Clear();
//Response.ClearContent();
//Response.ClearHeaders();
string fileName = DateTime.Now.ToShortDateString().Replace("-","")+"테스트.xls";
Response.ContentType = "application/vnd.ms-excel";
//컨텐츠 헤더 설정
Response.AddHeader("Content-Disposition","attachment;fileName="+ Server.UrlPathEncode(fileName));
//한글로 캐릭터 셋 설정..
Response.Charset = "euc-kr";
//ViewState 사용 안함
dgSearchList.EnableViewState = false; //dgSearchList는 데이터 그리드
//쓰기 객체 생성
System.IO.StringWriter sw = new System.IO.StringWriter();
//html쓰기 객체 생성
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
//데이터 그리드의 내용을 html로 쓴다.
//내용물은 테이블<TABLE>..</TABLE> 이런 식이 된다.
dgSearchList.RenderControl(hw);
String convStr = sw.ToString();
//convStr = System.Text.RegularExpressions.Regex.Replace(convStr, " ", " ");
String title = "<table border='1'><tr align='center' height='30'><td>test</td><td>test1</td></tr>";
Response.Write("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-kr\">");
Response.Write(title+convStr+"</table>");
//Response.Write(convStr);
//응답객체 종료
Response.End();
#endregion
위 소스에서 주석 처리한 부분들 보면,
안될경우에 추가해주면 된다던 부분들이다.. 난 추가 없이도 한글 안깨지고 잘 됐어~ ^^;
'개발이야기' 카테고리의 다른 글