우분투 10.04 (리눅스)/설명서

우분투 10.04에서 zip파일 한글 깨짐 문제 해결

곽성호(자유) 2010. 5. 20. 14:00
*아래 글은 우분투 한국 사용자 모임에서 옮겨오거나 인용한 것입니다.

저는 개인적으로 zip파일에 한글명이 있을 경우에는 J-zip을 사용합니다.
약간 번거롭지만 kozip보다는 쉽게 사용이 가능하다고 생각했습니다.
그런데 우분투 사용자 모임에서 노틸러스를 이용해 압축을 풀 수 있는 방법이 있어 소개합니다.

먼저 노틸러스 확장 기능을 설치합니다.

$ sudo apt-get install nautilus-actions 

다음은 kozip 파일을 생성하는 것입니다.

$  sudo apt-get install libarchive-zip-perl
$ sudo gedit /usr/local/bin/kozip

으로 파일을 생성하여 
아래 내용을 저장합니다.

Code:
#!/usr/bin/perl

use strict;
use Encode;
use Archive::Zip;
use Cwd 'abs_path';
use File::Basename;

my $full_path = abs_path($ARGV[0]); # 해당 화일의 풀패스를 얻어옴..

# 나중에 해당 zip 화일 명으로 폴더를 만들어 넣기 위해 확장자를 뺀 화일 이름을 구함
my ($fileNameOnly, $directory, $ext) = fileparse($full_path, '\.[^.]*');  

chdir $directory ; # 경로가 계정 위치가 되는 것을 막기 위해 해당 zip화일이 있는 곳으로 경로 변경

my $zip = Archive::Zip->new();

$zip->read($ARGV[0]) == 0 or
   die "$0: couldn't read $ARGV[0]\n";

# 만일 zip 화일 명이 한글일 경우 이런 식으로 안하면 디렉토리 글자가 깨짐 이유는 모름 -_-;
my $ExtractFileName;
my $FileNameUTF8 = decode("utf-8",$fileNameOnly);

foreach my $mref ($zip->members) 
{
    my $n = decode("cp949",$mref->fileName);
    print "Extracting <$n>\n";

    $ExtractFileName = $FileNameUTF8 . "/" . $n; # 디렉토리 밑에다가 압축 화일을 넣기 위해 이름 설정

    $zip->extractMember($mref,$ExtractFileName) == 0 or
   die "$0: couldn't extract $n\n";
}


 [시스템]>[기본설정]>[노틸러스 동작설정(Nautilus Actions Configuration)]에서
아래와 같이