자바 한글 인코딩이 안될때, 파라메터로 한글을 받을때 외계어가 나올때
 
어디선가 봤는데...어디서 봤는지 기억이..@_@;;
 
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

+ Recent posts