linux에서 zip으로 한글이 포함되어있는 파일을 압축할때 인코딩하는 옵션이 있나요..?

sisuc의 이미지

DB(MySQL)에 이름이 UTF-8형식으로 되어있는데요

이 이름으로 파일을 압축할 때 zip -r -F 파일이름.zip 압축해도 윈도우(일본 윈도우)에서 받아서 풀면 깨져있더라고요

여기저기 돌아다녀 봤더니 unzip -O CP949 파일이름.zip가 있길래 그냥 해봤더니 이건 아예 되지가 않네요..

버전은 unzip-5.52-3.el5입니다.

OS는 CentOS5.2입니다

답변 기다릴게요-

송효진의 이미지

7z 이나 rar 을 이용하시면 간단히 해결될 거라 생각합니다.

-O 옵션은 zip 용이 아니라서 방법이 없을 것 같네요.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

sisuc의 이미지

답변 감사합니다.

그런데 zip써야하는 상황이고, 다른 툴은 쓰면 안되는 상황이라..

그리고 unzip의 -O 옵션이 안되는 경우는 왜 인가요? 검색을 해보면 이게 안되는 경우의 질문은 없어서

저만 그런건지 아니면 뭔가 방법이 있는지 해서요.

위대한 한글

위대한 한글

auditory의 이미지

묶은것을 풀때는 unzip의 -O 옵션을 쓰면됩니다.
한글이 포함된것도 잘 풀립니다.

문제는 linux에서 zip으로 묶을때는 -O 옵션이 없다는것이고,
윈도에서 풀때는 이게 utf8 encoding이라는걸 모른다는 것이죠.
euc-kr 이면 잘 풀리지 않을까요?

sisuc의 이미지

말씀하신

[[윈도에서 풀때는 이게 utf8 encoding이라는걸 모른다는 것이죠.]]

의 의미는 linux에서 zip으로 압축을 하게 되면

utf8로 인코딩이 된다는 말씀이신가요?

linux의 기본 언어나 그런것 상관없이..

답변 기다릴게요-

(이 글을 보신 분중 알고 계신 분 누구나 답글 환영합니다-)

위대한 한글

위대한 한글

auditory의 이미지

linux의 현재 encoding그대로 압축이 되지 않을까요?
linux에서 euc-kr인코딩으로 되어있던 파일이라면 리눅스에서 zip으로 압축해서,
윈도우에서도 풀 수 있겠죠..

웹이나 php는 잘 모르겠고,
linux utf8 환경에서 잘 보이는 한글.txt 파일을
그냥 zip해서 window에서 풀면 안풀리지만,

convmv --notest -f utf-8 -t euc-kr 한글.txt

해서 encoding을 바꿔서 똑같이 zip으로 압축하면 windows에서도 잘 풀리네요.
sisuc의 이미지

linux 상에서

$zip -r 파일이름.zip

를 할 때

vi /etc/sysconfig/i18n

의 설정에 따라 인코딩한다는 말씀이신가요..?

위대한 한글

위대한 한글

auditory의 이미지

그게 아니라,
현재 한글파일이름이 encoding 되어있는 그대로 한다는 뜻입니다.

즉 한글파일이름은 결국은 하드디스크에 2진수로 표현되어있을테고,
한글을 2진수로 표현하는 방법이 encoding이겠지요.
그 변환은 파일을 만드는 시점에서 결정될테고요.

zip은 인코딩 같은건 신경쓰지 않고..
그냥 파일이름이 한글이든 영어든 상관안하고,
하드디스크에 저장된 2진수정보를 그대로 사용하겠지요...

zip의 결과물로 생기는 파일이름.zip의 경우라면
zip을 하는 순간 저장되므로 말씀하신대로 그 정보에따라 인코딩되겠네요.

@ 저도 잘은 모릅니다만, 그럴것 같네요.. 틀리다면 다른분께서 지적해주시겠지요. ^^

==

답변을 달고 보니 지금 문제가

가나다.txt 를 압축해서 라마바.zip 을 만들어 전송했을때,
"가나다"가 깨진다는 것인지, "라마바"가 깨진다는것인지
두 경우가 섞여있는거 같네요..

sisuc의 이미지

라마바.zip

가나다.txt <- 이게 깨집니다.

그리고 현재 리눅스 상에(vmware)직접 콘솔로 들어가서 한글파일을 보면

한글은 죄다 표시 되지 않습니다.

하지만 한글로 압축을시도하면 압축은 됩니다. 그걸 ftp같은거로 그대로 윈도우로 옮겨오면

한글 제대로 나옵니다.

하지만 문제는 그 안에 파일들이 깨져있습니다..

이것땜에 정말 죽겠네요..

위대한 한글

위대한 한글

auditory의 이미지

콘솔에서 한글이 표시되지 않는 문제는,

리눅스 프롬프트 상에서 locale 하셔서 현재 로케일 확인하시고요..
export LANG=ko_KR.euc-kr
export LANG=ko_KR.utf8
등등 현재 로케일을 바꿔가면서 파일이 잘 보이는지 확인도하시고요..

또 중요한 것이 현재 사용하시는 터미널이 어떤것인지,
어떤 인코딩으로 보여주는지도 확인하시고요..

쉬운문제인데 헤매시는것 같네요. ^^

sisuc의 이미지

저한텐 쉬운문제가 아니에요;;

진심으로 답변 감사합니다.

위대한 한글

위대한 한글

송효진의 이미지

리눅스용 zip 은 인코딩 정보를 저장하지 않습니다.
인코딩에 관여하지도 않습니다.
그냥 있는 그대로 저장할 뿐입니다.

윈도fs 는 유니코드지만, 윈도용 zip 이 지역화가 되어 있어 지역코드로 저장되는 것일 뿐입니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

sisuc의 이미지

어떤 있는 그대로라는 건지..?

제가 예를 들면 가나다라.zip로 압축을 시도하면 그 안에 파일들은

있는 그대로..?압축이 되어지는건가요?

있는 그대로..

죄송합니다 개념이 없어서..

위대한 한글

위대한 한글

송효진의 이미지

바이너리 단에서 그대로 라는 겁니다.

$ echo にほんご | xxd
0000000: e381 abe3 81bb e382 93e3 8194 0a         .............
$ echo にほんご | iconv -f UTF-8 -t SJIS-WIN | xxd
0000000: 82c9 82d9 82f1 82b2 0a                   .........
$ echo にほんご | iconv -f UTF-8 -t CP949 | xxd
0000000: aacb aadb aaf3 aab4 0a                   .........

이렇게 하면 파일이 만들어질까요 안만들어질까요?

$ echo にほんご | iconv -f UTF-8 -t SJIS-WIN | xargs touch

ls 해서 깨지건 말건 파일은 만들어 집니다.

위에서 쪼아도 안되는 건 안되는 거라고 하세요.^^;;;

7z 홈페이지는 가 보셨나요? 1mb 에요.

아니면, 차라리 파일명은 그냥 숫자로 1,2,3,4 해 놓고,
파일명을 일괄 변경하는 .bat 파일을 함께 첨부하던가요.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

sisuc의 이미지

linux에서 한글이 포함된 폴더와 파일들을 압축한.zip파일을

7zip으로 봤더니 깨져서 나오네요..

실제로 압축을 풀어봐도 깨져서 풀리네요

상관없겠지만 인터페이스가 일본어로 되어있어서 설정->언어에서 한글로 바꿔도 그렇네요..

하아-

내가 침범할 수 없는 영역의 문제인것인가 ㅎ

위대한 한글

위대한 한글

송효진의 이미지

UTF-8 로 해야죠.
한국어 일어 아랍어 섞여 있어도 잘 풀립니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

송효진의 이미지

zip 은 유니코드를 지원하지 않습니다.
대부분의 윈도용 zip 유틸은 인코딩을 선택할 수 없습니다.
일본어 윈도에서 압축한 zip 을 한국어 윈도에서 제대로 풀 수 없습니다.
반대도 물론 안됩니다.
가능한 국내유틸은 술집, v3zip 등이 있습니다.
위와 같은 경우 '한국어'를 풀어야 하므로 일본어에 없는 코드로 한국어를 인코딩 할 수 없으니 안됩니다.
7zip, winrar 을 설치할 수 없다면 다른것을 설치하여 해결할 수 없는 상황이라는 것이므로,
방법이 없습니다.

7zip 이 좋습니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

sisuc의 이미지

방법은 없는 거군요..

지금 문제는 웹어플을 한국, 일본에서 사용 할 경우의 문제로

한국 윈도우에서는 일본어로된(일본어명이 포함된).zip파일이 문제 없이 압축해독되는데

일본 윈도우에서는 같은 파일이 깨져서 나오던지 인코딩을 바꾸거나 웹 부라우져의 언어 설정을 바꾸면

아예 파일이 없어지는 경우도 있더군요.

왜 zip을 고집하냐 하면 windowsXP에서 기본적으로 제공하고 있기 때문입니다.

linux상에 실제 파일명은 1231203124234234024 이런식으로 되어있고 이 키값으로

db상(mysql utf-8)에 저장되어있는 파일명(한글이든 일어든)을 다시 zip으로 압축합니다

즉, linux상에서 가나다라.zip로 압축을 시키고

linux -> winxp로의 다운을 하게 되는 방식입니다.

winxp에서 압축해독이 안됩니다(저장을 한후 열려고하면 zip형식이 아니라고 멧세지가 나오고 바로 열기로 다운받으면 파일명들이 깨져서 나옵니다)

위에 하신 답변이 지금 이상황을 보고 하신 답변이라면 저는 여기서 포기하겠습니다.

방법이 없다고 보고해야겠군요.

마지막으로 확인 부탁드릴게요-

감사합니다.

위대한 한글

위대한 한글

송효진의 이미지

해당 OS 의 언어가 아닌 '외국어'를 압축 해제 하는 것은 기본유틸로는 안됩니다.
shift-jis 에서 cp949 의 zip 을 해제하려면 그것이 되는 툴을 설치해야 합니다.
마찬가지로 cp949 에서 shift-jis 를 해제하는 것도 툴을 설치 해야 합니다.
제대로 되었다는 그 파일이 히라가나와 간단한 한자로 되어 있었다면,
cp949 코드인것을 착각하신게 아닌가 생각됩니다.
cp949 에는 히라가나가 들어 있습니다.-_-;

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

sisuc의 이미지

답변 감사드립니다.

그런데 답변 내용 중
---
제대로 되었다는 그 파일이 히라가나와 간단한 한자로 되어 있었다면,
cp949 코드인것을 착각하신게 아닌가 생각됩니다.
cp949 에는 히라가나가 들어 있습니다.-_-;
---

이부분의 의미를 모르겠습니다.

저는 현재 일본어판 윈도우XP를 사용하고있습니다.

저희가 개발한 웹 어플에서는 파일을 복수 선택해서 다운로드하면 .zip형태로 압축을 시켜서 하나의 파일로 다운로드 하게 만들었습니다.

서버쪽인 linux에서 php의 exec함수를 이용해 $zip -r 파일명.zip을 실행합니다.

이때 저 "파일명" 은 mysql의 DB에 UTF-8형식으로 저장되어있습니다.

여기서 문제는

제가 쓰고 있는 일본어판WindowsXP에서 복수 선택한 파일중에 한글명으로된 파일이 있으면

다운로드후 zip압축을 풀어보면 전체 파일명이 다 깨져있거나 한글파일만 없어져있거나 하는 현상이 나타답니다.

이것을 해결하라고 며칠전에 지시 받았습니다

그래서 저 exec함수에 들어가기전에 php의 iconv함수를 써서

$파일명 = iconv( "UTF-8" , "CP949" , $fname );

를 하게했습니다.

저 코드를 쓰면 복수 선택한 파일중에 일본어가 있으면 물론 깨지겠지만

한글은 제대로 표현되리라는 기대를 했습니다.

하지만 여전히 깨져있었습니다(깨진 글자가 조금 달라진거 보면 iconv함수가 적용된건 확실한듯 합니다)

그래서 복수의 전부 한글명 파일을 다운로드했더니 이번에도 깨져있었습니다.

이것에 대한 해결책의 방법은 없다고 보시나요..?

읽어주셔서 감사합니다-.

위대한 한글

위대한 한글

송효진의 이미지

sisuc wrote:

한국 윈도우에서는 일본어로된(일본어명이 포함된).zip파일이 문제 없이 압축해독되는데

이것에 대한 내용이었습니다.

일본어도 어느정도는 utf8 -> cp949 가 가능합니다.

아니면 혹시 한국어 윈도에 설치된 유틸이 v3zip 같은 그런 기능이 있는 유틸일지도 모르겠네요.

기본 툴로는 방법이 없습니다.
어차피 설치를 유도해야 하는거면 sevenzip.sf.net 이 좋습니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

sisuc의 이미지

아 그것에 대한 의미였군요-

답변 정말 감사드립니다-

여러가지 공부가 되었습니다.

다른 툴의 설치를 유도해서 쓰는 방법을 방법으로 하던지

다른 압축방식을 쓰게 해야겠군요

송효진님 감사합니다.

위대한 한글

위대한 한글

foxip의 이미지

ZIP 풀면서 하위 디렉토리와 파일 까지 모두 인코딩 변환 해주는 스크립트입니다.

다운로드: http://www.vogie.net/node/256

unzip.euc-kr [filename].zip , unzip.shift-jis [filename].zip 이렇게 실행하면 실행되요.

다른 인코딩 들도 ln -sf unzip.locale unzip.big5 이런식으로 만드시고 unzip.big5 [filename].zip 이렇게 실행하시면 잘 풀립니다 ^^

그냥 검색하다보니 프로그램이 너무 없어서 만들어봤네요.

게임 개발자 포럼: http://www.vogie.net

지나가는자의 이미지

한국 개발자들은 아직도 인코딩에 고통 받고 있네요.
zip 리눅스 윈도우 간 호환 문제는 여전 한 듯 합니다.

MS와 CP949 쪽을 저주하고 지나가봅니다.

Anti-Lock의 이미지

....라기 보다는...
zip 파일에 존재하는 '파일명' 정보를 기록할때.. 어떤 인코딩을 사용해야한다는 스펙이 없었거나 제대로 구현하지 않았던것이 근본적인 문제아니었을까요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.