'이글루 백업 프로그램 - 배포는 어떻게 하지?'

위에서 만든 프로그램을 리눅스에서 먼저 만들었습니다.

이유는 프로그래밍하기에

윈도우보다 리눅스가 더 좋은 환경이기 때문입니다.^^

 

그렇게 프로그램을 만들고나서

윈도우에서도 확인하고자

ActivePerlEasyEclipse for LAMP를 설치하였습니다.

그리고 관련 라이브러리를 받아 실행시켜보았습니다.

 

c1

완전히 깨져서 나오더군요.

왜 그런가 찾아보니

해당 소스 파일이 UTF8으로 적혀있었습니다.

그래서 이것을 ANSI(정확하게는 cp949)로 저장했습니다.

 

그러자 또 하나의 문제가 발생했습니다.

정규표현식에서 한글을 썼는데,

이글루스가 UTF8인지라 검색이 되지 않는 것입니다.

 

따라서 이 문제를 해결하고자 이리저리 찾아다녔습니다.

그러다 한 곳에서 답을 구할 수 있었습니다.

'perl 에서 utf-8을 euc-kr로 컨버팅 하려면?'

찾아보니 Encode 모듈을 이용해서 변환하는 것을 알았지만,

저렇게 해야함을 알았습니다.

 

예제를 만들어보았습니다.

#!/usr/bin/perl

use strict;

use warnings;

use Encode;

 

print "Hi. I'm NoSyu.\n";

print "こんにちは. 私は NoSyuです.\n";

print "안녕하세요. NoSyu입니다.\n\n";

 

print encode("euc-kr", decode("utf-8", "Hi. I'm NoSyu.\n"));

print encode("euc-kr", decode("utf-8", "こんにちは. 私は NoSyuです.\n"));

print encode("euc-kr", decode("utf-8", "안녕하세요. NoSyu입니다.\n\n"));

 

__END__

위의 소스를 ANSI로 적혀진 소스를 실행시켰습니다.

c2

위에서 잘 나옵니다.

즉, 따로 처리할 필요없이 그냥 'print'함수를 쓰면 됩니다.

 

하지만 소스를 UTF8로 적혀진 소스를 실행시켰습니다.

c3

이제는 밑의 것이 잘 나옵니다.

 

위의 소스에 나오는 함수 encode와 decode는

이런 함수로 파악하였습니다.

encode - 두 번째 파라메터인 문자열을

첫 번째 파라메터의 문자셋으로 바꾼 8진수를 반환.

decode - 두 번째 파라메터인 8진수를

첫 번째 파라메터의 문자셋으로 바꾼 문자열을 반환.

- http://perldoc.perl.org/Encode.html

 

하지만 조금 이상합니다.

소스를 보면 decode에 들어가는 파라메터는 문자열이고,

encode가 반환하는 것은 문자열입니다.

즉, 함수 설명에서는 8진수가 들어가야하는데,

소스에서는 문자열이 쓰이고 있습니다.

이는 Perl이 문자열을 자동으로 8진수로 바꾸는건지

해당 함수가 그렇게 처리하는지 잘 모르겠습니다.

 

아무튼 위의 함수를 써서

UTF8 문자셋으로 적혀진 Perl 파일을 실행시켜

DOS 환경에서 제대로 실행시켰습니다.

05

깔끔하게 잘 되는군요.^^

 

PS

이러나저러나 영어는 잘 나오는군요.

(정확하게는 알파벳..)

영어 잘 하는 사람은 좋겠습니다.(응??)

 

PS2

중국어도 테스트하려고 하였으나,

'Hello. I'm NoSyu.'를 번역한 '?好. 我是NoSyu.'을

AcroEdit가 인식하지 못하는 문자가 있어 제외하였습니다.

(번역 사이트 : http://babelfish.altavista.com/tr)

 

참조

http://kldp.org

http://perldoc.perl.org

http://www.perl.com

크리에이티브 커먼즈 라이센스
Creative Commons License

글에 잘못된 점, 다른 점, 부족한 점이 있다면 지적해주세요.
댓글, 트랙백, 메일 모두 고맙습니다.

트랙백 주소 :: http://nosyu.pe.kr/trackback/1063

댓글을 달아 주세요

  1. 이녁 2007/09/29 23:09  댓글주소  수정/삭제  댓글쓰기

    우엉.. 컴퓨터 잘 다루는 사람 보면 부러워요

  2. NoSyu 2007/09/30 08:38  댓글주소  수정/삭제  댓글쓰기

    /이녁/
    전 이녁님처럼 좋은 글 쓰는 사람 보면 부러워요.ㅜㅜ

  3. Mr.Dust 2007/10/02 04:56  댓글주소  수정/삭제  댓글쓰기

    Acroedit 를 쓰시는군요.
    참고로 Acroedit 는 UTF-8 을 제대로 지원하지 못합니다. 그런 이유로 중국어가 제대로 나오지 않는 것 같습니다.

  4. NoSyu 2007/10/02 11:36  댓글주소  수정/삭제  댓글쓰기

    /Mr.Dust/
    네.. 도서관에서 작업하면서 윈도우에 돌아가는 공개용 소프트웨어를 찾다보니
    Acroedit가 그나마 좋더군요.^^
    몇 가지 아쉬운 점이 있기에 메모장 대신으로 쓰고 있습니다.^^

    Acroedit는 UTF-8을 제대로 지원하지 못하는군요.
    그럼 다른 프로그램을 써야하겠는데,
    Mr.Dust님은 무엇을 쓰시나요??

  5. Mr.Dust 2007/10/02 23:14  댓글주소  수정/삭제  댓글쓰기

    저는 PSPAD 를 쓰다가 요즘은 Notepad++ 를 씁니다.
    물론 둘다 공개소프트입니다. 전자는 프리웨어로 기능이 막강합니다만, 가끔 오류가 있었고, 후자는 그럭저럭 쓸만한 기능에 오픈소스입니다. 뭐 그럭저럭이라고 해도.. FTP 연결기능과 컬럼 편집 기능이 없는 정도뿐이지만요. 그래도 컬럼 편집 기능이 없는건 치명적 ㅠ.ㅡ

  6. NoSyu 2007/10/03 08:34  댓글주소  수정/삭제  댓글쓰기

    /Mr.Dust/
    아.. 해당 프로그램을 쓰신다고 하셨죠.^^;;;;
    (제가 기억력이 나빠서....)
    제가 Acroedit를 쓰는 이유 중 하나가 바로 FTP 연결 기능 때문입니다.
    동아리 서버에 접속해서 작업해야 하는 경우가 있거든요.^^;;
    PSPAD를 한 번 살펴봐야겠습니다.
    정보 고맙습니다.ㅜㅜ

  7. NoSyu 2009/01/10 09:32  댓글주소  수정/삭제  댓글쓰기

    위에 질문에 대한 답변으로 이런 글을 발견하였습니다.

    1. Perl 프로세스 외부에서 파일,표준입력,소켓등의 I/O 통해 받아들이는 문자열은 단순히 옥텟열이다.

    2. 옥텟열이 어떤 인코딩을 사용하고 있느냐를 알려줘서 그것을 Perl 내부유니코드포멧으로 변환하는 것이 Encode모듈의 decode 함수다.

    http://aero.springnote.com/pages/1053508

[로그인][오픈아이디란?]