2008년 11월 9일

Perl/Tk에서 한글사용하기.

Perl/Tk 모듈(그래픽 사용자 인터페이스 툴킷)은 인코딩을 정의해 주지 않으면 한글이 아예 나오지 않고 에러가 납니다..다음과 같이 인코딩을 한글로 지정하면 됩니다. 아래코드는 펄사용자 모임의 Tk tutorial 코드입니다.

#!/usr/bin/perl
use strict;
use encoding "cp949";
use Tk;
my $mw = MainWindow->new(-title=>"자! 시작입니다");
$mw->geometry("=600x400");

#$mw->Label(-text=>"Hello world 1!!")->pack(-side=>'bottom');
$mw->Label(-text=>"Hello world 2!!")->pack();
$mw->Label(-text=>"Hello world 3!!")->pack();
my $l_hello = $mw->Label(-text=>"Hello world!!")->pack();

$mw->Button(
-text=>"configure",
-command=>\&get_env
)->pack(-side=>'bottom');

$mw->Button( -text=>"close", -command=>sub { exit; } )->pack(-side=>'bottom');

MainLoop();

###
sub get_env {
my($k,$v, $txt);
while(($k,$v) = each(%ENV)) {
$txt .= "$k=$v\n";
}
$l_hello->configure(-text=>$txt);
}

# 단, 유니코드(UTF-8)일 경우에는
# use encoding 'utf8';# 을 사용
use encoding 'cp949'; 라고 해주면 됩니다.
확장완성형입니다.use encoding 'euc-kr'; 도 되긴 되는데 이러면 "똠방각하"의 "똠" 같은 글자가 나오지 않습니다.
그냥 완성형입니다.use encoding 'utf8'; 로 하면 물론 똠방각하도 되지만, 이때는 소스 자체의 인코딩이 유니코드(UTF-8)이어야 합니다.

위글은 mwultong Blog ― 디카 / IT에서 발췌한 글을 수정하였습니다.

댓글 2개:

익명 :

use encoding 프래그마 사용은 설계의 잘못으로 추천되지 않습니다. 이와 관련해서 생길 수 있는 문제는
http://babyworm.net/tatter/220 를 보시면 되구요

Perl/tk에서 한글이 제대로 표시되게 하려면
use utf8;
을 사용하고 코드는 utf8인코딩으로 작성하면 됩니다.
Perl 유니코드 관련한 더 자세한 사항은 http://aero.springnote.com/pages/1053508 을 참고하세요~

이창헌 :

좋은 의견 감사합니다.
적용해보고 블로그 게시물 수정하여야 하겠네요..