ajaxplorer-3.0.1을 사용중인데 한글 업로드 / 한글 다운로드는 문제가 없지만
한글파일이 포함된 폴더의 압축 다운로드에는 문제가 발생한다.


아래의 링크를 따라 수정을 해봤지만 흐음.. 안되는건 여전 ㅠ.ㅠ

[링크 : http://sj0000.tistory.com/27]
Posted by 구차니

댓글을 달아 주세요

  1. qprk

    근본적인 원인은 압축할때 파일명이나 이런것 그대로 압축이 되는것이 문제였습니다.

    zip 의 포맷을 확인 해본 결과 bit flag 부분의 11번째 비트가 1이면 내부 코멘트나 파일명이 utf8 인것으로 인식 하도록 되어 있고
    ajaxplorer가 사용하는 pclzip 라이브러리는 이 값이 0 입니다. (모든 플래그의 값이 다 0으로 설정됨)

    압축 푸는 프로그램(알집 등) 의 경우 기본적으로 컴퓨터(windows의 경우 cp949)의 인코딩 방식을 따르도록 되어 있습니다.

    압축파일명이 깨진 경우 압축 푸는 프로그램에서 설정부분에 가서 utf8 로 변경 하면 특별한 수정 없이도 압축이 잘 풀립니다.

    이미 많이 공개 되어 있는 iconv() 를 써서 하는것도 효과는 있습니다.
    하지만 이것은 파일 여러개를 묶었을때 효과가 있고 폴더를 내려 받을때는 폴더명만 안깨지고 폴더 안의 모든 파일명은 다 깨지더군요

    근본적인 해결 방법은 위에서 이야기 한 flag 를 설정 하는 방법 입니다.


    -----
    core/classes/pclzip.lib.php

    파일에서

    $p_header['flag'] = 0;

    부분을 찾아서 값을 아래와 같이 2048 로 하면 됩니다.

    $p_header['flag'] = 2048;

    -----

    이것은 위에서 이야기 한 11번째 플래그 값을 1로 설정 하는것 으로 해당 압축 파일의 모든 파일명이 utf8 이다 라고 이야기 해주는것입니다.

    압축 푸는 프로그램들은 이 값을 보고 utf8 로 파일명을 읽어오기 때문에 깨지는것 없이 잘 동작 합니다.

    이렇게 글 남기는것은 이거 찾느라 몇일 고생해서 다른 분들과 공유하기 위함 입니다.

    2013.10.04 14:45 [ ADDR : EDIT/ DEL : REPLY ]