자바 한글 인코딩이 안될때, 파라메터로 한글을 받을때 외계어가 나올때
어디선가 봤는데...어디서 봤는지 기억이..@_@;;
public class StrConv {
enum CharSet { UTF8, EUCKR, KSC5601 }
private String strPageEncoding;
private CharSet pageEncoding;
private final String ENCODING_SET = "8859_1";
public StrConv() {
this.pageEncoding = CharSet.UTF8;
setStrEncoding();
}
public StrConv(CharSet pageEncoding) {
this.pageEncoding = pageEncoding;
setStrEncoding();
}
private void setStrEncoding() {
if (this.pageEncoding == CharSet.UTF8)
strPageEncoding = "UTF-8";
else if (this.pageEncoding == CharSet.EUCKR)
strPageEncoding = "EUC-KR";
else if (this.pageEncoding == CharSet.KSC5601)
strPageEncoding = "KSC5601";
}
public String convert(String target) {
if (target == null) {
return null;
}
try {
return new String(target.getBytes(ENCODING_SET), strPageEncoding);
} catch (Exception e) {
return target;
}
}
}
-------------------------------------------------------------------------------------------------------------------
한글처리시 request, reponse.setCharacterEncoding("..."); 도 안먹히는 골때는 상황을 벗어나게 해줄 클래스입니다.
사실 알바하다 그런 상황에 맞닥들여서 한동안 고생하다 저 방법이 직빵이란 사실을 깨닫고 분노에 휩싸여 만든 클래스 ...
사용예(pageEncoding="UTF-8"인 경우) :
-------------------------------------------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="test.StrConvr;" %>
<%! StrConv sc = new StrConv(StrConv.UTF8); %>
<%-- UTF-8인 경우에는 그냥 new StrConv();로 생성하셔도 됩니다. --%>
<%
String brokenKoreanWords = request.getParameter("KoreanWords"); /* 한글로 날라온 파라메터 */
String cleanKoreanWords = sc.convert(brokenKoreanWords);
out.print(cleanKoreanWords);
%>
-------------------------------------------------------------------------------------------------------------------
사용예(pageEncoding="EUC-KR"인 경우) :
-------------------------------------------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="test.StrConvr;" %>
<%! StrConv sc = new StrConv(StrConv.EUCKR); %>
<%
String brokenKoreanWords = request.getParameter("KoreanWords"); /* 한글로 날라온 파라메터 */
String cleanKoreanWords = sc.convert(brokenKoreanWords);
out.print(cleanKoreanWords);
%>
-------------------------------------------------------------------------------------------------------------------
사용예(pageEncoding="KSC5601"인 경우) :
-------------------------------------------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=KSC5601" pageEncoding="KSC5601"%>
<%@ page import="test.StrConvr;" %>
<%! StrConv sc = new StrConv(StrConv.KSC5601); %>
<%
String brokenKoreanWords = request.getParameter("KoreanWords"); /* 한글로 날라온 파라메터 */
String cleanKoreanWords = sc.convert(brokenKoreanWords);
out.print(cleanKoreanWords);
%>
출처 : http://blog.naver.com/colanara?Redirect=Log&logNo=90118572613
'Java' 카테고리의 다른 글
[Java] Annotation-1 (0) | 2011.09.06 |
---|---|
[Java] Annotation-2 (0) | 2011.09.06 |
[Java] 오픈소스 정리 (0) | 2011.07.25 |
[Java] Java Performance Tip 1.1 (0) | 2011.07.18 |
[Java] jdk 5.0 유용한 기능 (0) | 2011.07.15 |