..
Swfupload(UTF-8)과 프로젝트(EUC-KR)가 인코딩이 달라 한글이 깨지는 문제점
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. 인코딩

1) 프로젝트의 인코딩 : EUC-KR
2) SwfUpload의 인코딩 : UTF-8

2. SwfUpload에서 업로드 할 파일을 CommonsMultipartResolver에서 받아서 처리 합니다.

1) HyunjaeMultipartResolver 클래스를 생성합니다.
2) determineEncoding 메소드를 오버라이딩 합니다.

    @Override    protected String determineEncoding(HttpServletRequest request) {        StringBuffer url = request.getRequestURL();        if(url.indexOf("imageUpload") != -1){ // swfupload를 사용하고 있는 imageUpload의 경우 filename(한글)을 UTF-8로 가져옵니다.             return "UTF-8";        }        return "EUC-KR"; // 그외의 경우 EUC-KR로 받아옵니다.    }

3. xxx-servlet.xml에 Bean 등록

    <bean id="multipartResolver" class="net.schoolunit.hyunjae.upload.HyunjaeMultipartResolver">        <property name="defaultEncoding" value="UTF-8" />        <property name="maxUploadSize" value="100000000" />    </bean>

4. 업로드 완료 후 filename(EUC-KR) ==> vm에 출력 ( UTF-8 )

1) controller에 uploadFile객체를 vm에 출력하기 전에 UTF-8로 인코딩

uploadFile.setFilename( URLEncoder.encode(uploadFile.getFilename(), "UTF-8"));uploadFile.setRealname(URLEncoder.encode(uploadFile.getRealname(), "UTF-8"));

2) hanclers.js에 decodeURIComponent를 해준다.

function uploadSuccessImage(file, serverData) {    try {        var progress = new FileProgress(file, this.customSettings.progressTarget);        progress.setComplete();        progress.setStatus("Complete.");        progress.toggleCancel(false);        var url = location.href;        var hostname = url.substring(0, url.indexOf("/", 7));        var fileinfo = serverData.split(";");        var upflieno = fileinfo[0];        var filemime = fileinfo[1];        var filename = fileinfo[2];        var filesize = fileinfo[3];        var regdate = fileinfo[4];        var datepath = fileinfo[5];        var realname = fileinfo[6];        var filedata = {            'upfileno' : upflieno,            'imageurl': hostname + '/imageFiles/' + datepath + decodeURIComponent(realname),            'filename': decodeURIComponent(filename),            'filesize': filesize,            'imagealign': 'C',            'originalurl': hostname + '/imageFiles/' + datepath + decodeURIComponent(realname),            'thumburl': '/imageFiles/' + datepath + '/_thumb_' + decodeURIComponent(realname)        };        execAttach(filedata);    } catch (ex) {        this.debug(ex);    }}

'DEV > java' 카테고리의 다른 글

객체 동치성 비교 방법  (0) 2011.12.04
velocity reference url  (0) 2010.08.04
iterate  (0) 2010.07.13
  Comments,     Trackbacks