memi 님이 쓰신 글 :
: 아 윈도우 내장된 기본압축으로 '새 텍스트문서.txt' 압축한것입니다.
:
: 님이 쓰신 글 :
: : 테스트에 사용된 문제의 zip 파일을 올려야 확인해볼수 있지
: : 않을까요
: :
: : memi 님이 쓰신 글 :
: : : XE2부터 내장된 zip library를 잘 사용했었는데요
: : : 한글이 문제네요
: : : 아래와 같이 testz 폴더에 새 텍스트 문서.txt 하나 넣고 testz.zip으로 압축한걸 풀면 파일 안의 내용은 멀쩡한데 폴더,파일명 한글 부분이 깨집니다.
: : :
: : :
: : : #include
: : : TZipFile *z = new TZipFile;
: : : #if 1
: : : z->ExtractZipFile("c:\\testz.zip", "c:\\");
: : : #else
: : : z->Open("c:\\testz.zip",zmRead);
: : : String whx;
: : : for(int i = 0; i < z->FileCount; i++) {
: : : Memo1->Lines->Add(z->FileName[i]); //깨져있는 파일명...
: : :
: : : wchar_t *wc = z->FileName[i].w_str();
: : : whx="";
: : : for(int j = 0; j < z->FileName[i].Length(); j++)
: : : whx+= IntToHex(wc[j],4) + " ";
: : : Memo1->Lines->Add(whx); //깨진 데이터는 어떤 인코딩이길래?
: : : }
: : : z->Close();
: : : #endif
: : : delete z;
: : :
: : :
: : : 원하는 값 : testz\새 텍스트 문서.txt
: : : 깨져있는 값(깨져서 헥스로) : 0074 0065 0073 0074 007A 002F 2557 2321 0020 253C 256A 255C 2551 255E 00AB 0020 2563 00AB 255D 00A1 002E 0074 0078 0074
: : :
: : : 새 : 2557 2321 (무슨 네바이트나..)
: : : 텍 : 253C 256A
: : :
: : : 혹시 TZip class 사용해보신 분들 계신가요? 버그인지 혹시 다른 사용법이 있을까요?
http://en.wikipedia.org/wiki/Code_page_867
CP949 -> CP867 -> 유니코드로 저장해놓은거네요. 삽질 딱 하기 좋군요 =_=;
새 2557 -> 187, 2321 -> 245
유니코드 -> CP867 -> CP949로 변환하시면 됩니다.
|