Commit | Line | Data |
---|---|---|
5a310f9b | 1 | =encoding utf8 |
642fd4ec | 2 | |
5a310f9b LT |
3 | 이 문서를 perldoc을 써서 보지 않고 직접 보는 경우에는 각 부분의 |
4 | 역할을 표시하기 위해 쓰인 =head, =item, 'L' 등은 무시하십시오. | |
5 | 이 문서는 따로 perldoc을 쓰지 않고 보더라도 읽는데 별 지장이 | |
6 | 없는 POD 형식으로 짜여 있습니다. 더 자세한 것은 perlpod | |
7 | 매뉴얼을 참고하십시오. | |
642fd4ec JH |
8 | |
9 | =head1 NAME | |
10 | ||
5a310f9b | 11 | perlko - Perl과 한국어 인코딩 |
642fd4ec JH |
12 | |
13 | =head1 DESCRIPTION | |
14 | ||
5a310f9b | 15 | Perl의 세계에 오신 것을 환영합니다 ! |
642fd4ec JH |
16 | |
17 | ||
5a310f9b LT |
18 | Perl은 5.8.0판부터 유니코드/ISO 10646에 대한 광범위한 지원을 합니다. |
19 | 유니코드 지원의 일환으로 한중일을 비롯한 세계 각국에서 | |
20 | 유니코드 이전에 쓰고 있었고 지금도 널리 쓰이고 있는 수많은 인코딩을 | |
21 | 지원합니다. 유니코드는 전 세계에서 쓰이는 모든 언어를 위한 표기 체계 - | |
22 | 유럽의 라틴 알파벳, 키릴 알파벳, 그리스 알파벳, 인도와 동남 아시아의 | |
23 | 브라미 계열 스크립트, 아랍 문자, 히브리 문자, 한중일의 한자, 한국어의 한글, | |
24 | 일본어의 가나, 북미 인디안의 표기 체계 등-를 수용하는 것을 목표로 하고 | |
25 | 있기 때문에 기존에 쓰이던 각 언어 및 국가 그리고 운영 체계에 고유한 | |
26 | 문자 집합과 인코딩에 쓸 수 있는 모든 글자는 물론이고 기존 문자 집합에서 | |
27 | 지원하고 있지 않던 아주 많은 글자를 포함하고 있습니다. | |
642fd4ec JH |
28 | |
29 | ||
5a310f9b LT |
30 | Perl은 내부적으로 유니코드를 문자 표현을 위해 사용합니다. 보다 구체적으로 |
31 | 말하면 Perl 스크립트 안에서 UTF-8 문자열을 쓸 수 있고, | |
32 | 각종 함수와 연산자(예를 들어, 정규식, index, substr)가 바이트 단위 | |
33 | 대신 유니코드 글자 단위로 동작합니다. (더 자세한 것은 | |
34 | perlunicode 매뉴얼을 참고하십시오.) 유니코드가 널리 보급되기 전에 | |
35 | 널리 쓰이고 있었고, 여전히 널리 쓰이고 있는 각국/각 언어별 인코딩으로 | |
36 | 입출력을 하고 이들 인코딩으로 된 데이터와 문서를 다루는 것을 돕기 위해 | |
37 | 'Encode'가 쓰였습니다. 무엇보다 'Encode'를 써서 수많은 인코딩 사이의 | |
38 | 변환을 쉽게 할 수 있습니다. | |
642fd4ec | 39 | |
5a310f9b | 40 | 'Encode'는 다음과 같은 한국어 인코딩을 지원합니다. |
642fd4ec | 41 | |
97cef9f7 JH |
42 | =over 4 |
43 | ||
5a310f9b | 44 | =item * euc-kr |
97cef9f7 | 45 | |
5a310f9b LT |
46 | US-ASCII와 KS X 1001을 같이 쓰는 멀티바이트 인코딩 (흔히 완성형이라고 |
47 | 불림.) KS X 2901과 RFC 1557 참고. | |
97cef9f7 | 48 | |
5a310f9b | 49 | =item * cp949 |
97cef9f7 | 50 | |
5a310f9b LT |
51 | MS-Windows 9x/ME에서 쓰이는 확장 완성형. euc-kr에 8,822자의 |
52 | 한글 음절을 더한 것임. alias는 uhc, windows-949, x-windows-949, | |
53 | ks_c_5601-1987. 맨 마지막 이름은 적절하지 않은 이름이지만, Microsoft | |
54 | 제품에서 CP949의 의미로 쓰이고 있음. | |
97cef9f7 | 55 | |
5a310f9b | 56 | =item * johab |
97cef9f7 | 57 | |
5a310f9b LT |
58 | KS X 1001:1998 부록 3에서 규정한 조합형. 문자 레퍼토리는 cp949와 |
59 | 마찬가지로 US-ASCII와 KS X 1001에 8,822자의 한글 음절을 더한 것임. | |
60 | 인코딩 방식은 전혀 다름. | |
97cef9f7 | 61 | |
5a310f9b | 62 | =item * iso-2022-kr |
97cef9f7 | 63 | |
5a310f9b LT |
64 | RFC 1557에서 규정한 한국어 인터넷 메일 교환용 인코딩으로 US-ASCII와 |
65 | KS X 1001을 레퍼토리로 하는 점에서 euc-kr과 같지만 인코딩 방식이 다름. | |
66 | 1997-8년 경까지 쓰였으나 더 이상 메일 교환에 쓰이지 않음. | |
97cef9f7 | 67 | |
5a310f9b | 68 | =item * ksc5601-raw |
97cef9f7 | 69 | |
5a310f9b LT |
70 | KS X 1001(KS C 5601)을 GL(즉, MSB를 0으로 한 경우) 에 놓았을 때의 |
71 | 인코딩. US-ASCII와 결합하지 않고 단독으로 쓰이는 일은 X11 등에서 글꼴 | |
72 | 인코딩 (ksc5601.1987-0. '0'은 GL을 의미함.)으로 쓰이는 것을 제외하고는 | |
73 | 거의 없음. KS C 5601은 1997년 KS X 1001로 이름을 바꾸었음. 1998년에는 두 | |
74 | 글자 (유로화 부호와 등록 상표 부호)가 더해졌음. | |
97cef9f7 JH |
75 | |
76 | =back | |
77 | ||
5a310f9b | 78 | 몇 가지 사용 예제를 아래에 보입니다. |
642fd4ec | 79 | |
5a310f9b LT |
80 | 예를 들어, euc-kr 인코딩으로 된 파일을 UTF-8로 변환하려면 다음과 |
81 | 같이 하면 됩니다. | |
642fd4ec JH |
82 | |
83 | ||
84 | perl -Mencoding=euc-kr,STDOUT,utf8 -pe1 < file.euckr > file.utf8 | |
85 | ||
5a310f9b | 86 | 역변환은 다음과 같이 할 수 있습니다. |
642fd4ec JH |
87 | |
88 | perl -Mencoding=utf8,STDOUT,euc-kr -pe1 < file.utf8 > file.euckr | |
89 | ||
5a310f9b LT |
90 | 이런 변환을 좀더 편리하게 할 수 있도록 Encode 모듈을 써서 |
91 | 순수하게 Perl로만 쓰인 piconv가 Perl에 들어 있습니다. | |
92 | 그 이름에서 알 수 있듯이 piconv는 Unix에 있는 iconv를 | |
93 | 모델로 한 것입니다. 그 사용법은 아래와 같습니다. | |
642fd4ec JH |
94 | |
95 | piconv -f euc-kr -t utf8 < file.euckr > file.utf8 | |
96 | piconv -f utf8 -t euc-kr < file.utf8 > file.euckr | |
97 | ||
5a310f9b LT |
98 | 또, 'PerlIO::encoding' 모듈을 써서 한국어 인코딩을 쓰면서 글자 단위 |
99 | (바이트 단위가 아니라) 처리를 쉽게 할 수 있습니다. | |
642fd4ec | 100 | |
97cef9f7 | 101 | #!/path/to/perl |
642fd4ec JH |
102 | |
103 | use encoding 'euc-kr', STDIN => 'euc-kr', | |
104 | STDOUT-> 'euc-kr', STDERR=>'euc-kr'; | |
105 | ||
5a310f9b LT |
106 | print length("가나"); # 2 (큰 따옴표는 글자 단위 처리를 지시) |
107 | print length('가나'); # 4 (작은 따옴표는 바이트 단위 처리를 지시) | |
108 | print index("한강, 대동강", "염"); # -1 ('염'이 없음) | |
109 | print index('한강, 대동강', '염'); # 7 (8번째와 9번째 바이트가 '염'의 | |
110 | 코드값과 일치함.) | |
642fd4ec JH |
111 | |
112 | ||
5a310f9b | 113 | =head2 더 자세히 알고 싶으면... |
642fd4ec | 114 | |
5a310f9b LT |
115 | Perl을 설치하면 대단히 자세한 문서가 같이 따라 오며, 이 문서를 통해 |
116 | Perl 전반 뿐 아니라 유니코드 지원, Encode의 사용법 등에 많은 것을 | |
117 | 배울 수 있습니다. 아직 이 문서는 현재 모두 영어로 쓰여 있습니다. | |
642fd4ec JH |
118 | |
119 | ||
5a310f9b | 120 | =head2 Perl 관련 자료 |
642fd4ec | 121 | |
5a310f9b LT |
122 | 위에서 언급한 문서 외에도 다음과 같은 자료가 있습니다. 이 목록은 결코 |
123 | 완전한 것이 아니고 일부 대표적인 것만 모은 것입니다. | |
97cef9f7 | 124 | |
642fd4ec JH |
125 | =over 4 |
126 | ||
127 | =item L<http://www.perl.com/> | |
128 | ||
5a310f9b | 129 | O'Reilly의 Perl 웹 페이지 |
642fd4ec JH |
130 | |
131 | =item L<http://www.cpan.org/> | |
132 | ||
133 | Comprehensive Perl Archive Network | |
134 | ||
135 | =item L<http://lists.perl.org/> | |
136 | ||
5a310f9b LT |
137 | Perl 메일링 리스트. 많은 리스트 가운데 |
138 | perl-unicode에서 'Encode'에 대해 논의함. | |
642fd4ec JH |
139 | |
140 | =back | |
141 | ||
5a310f9b | 142 | =head2 Perl을 더 깊게 공부하는데 도움을 줄 수 있는 한국어 관련 사이트 |
642fd4ec JH |
143 | |
144 | =over 4 | |
145 | ||
146 | =item L<http://www.perl.or.kr/> | |
147 | ||
5a310f9b | 148 | Perl 한국 사용자 모임 |
642fd4ec JH |
149 | |
150 | =item L<news:han.comp.lang.perl/> | |
151 | ||
5a310f9b | 152 | 한국어 Perl 뉴스 그룹 |
642fd4ec | 153 | |
464a08e7 | 154 | =item L<http://www.hanb.co.kr/search/searchResult.html?keyword=perl> |
818c4caa | 155 | |
5a310f9b | 156 | O'Reilly에서 나온 한국어 Perl 서적 목록 |
642fd4ec JH |
157 | |
158 | =item L<http://www.perlschool.net/> | |
159 | ||
5a310f9b | 160 | Perl 기초 강좌 및 소스, 최근 동향, 관련 해외 사이트 링크 |
642fd4ec JH |
161 | |
162 | =item L<http://www.perl.co.kr> | |
163 | ||
5a310f9b | 164 | Perl에 관련된 CGI, DB, 연동 등에 대한 정보 및 뉴스 제공 |
642fd4ec JH |
165 | |
166 | =back | |
167 | ||
5a310f9b | 168 | =head2 유니코드 및 한국어 인코딩 관련 자료 |
642fd4ec JH |
169 | |
170 | =over 4 | |
171 | ||
172 | =item L<http://www.unicode.org/> | |
173 | ||
5a310f9b | 174 | 유니코드 컨소시엄. |
642fd4ec JH |
175 | |
176 | =item L<http://std.dkuug.dk/JTC1/SC2/WG2> | |
177 | ||
5a310f9b LT |
178 | 기본적으로 Unicode와 같은 ISO 표준인 ISO/IEC 10646 UCS(Universal |
179 | Character Set)을 만드는 ISO/IEC JTC1/SC2/WG2의 웹 페이지. | |
642fd4ec | 180 | |
818c4caa | 181 | =item L<http://www.cl.cam.ac.uk/~mgk25/unicode.html> |
642fd4ec | 182 | |
5a310f9b | 183 | 유닉스/리눅스에서 유니코드와 UTF-8 사용에 대한 문답집(FAQ) |
642fd4ec | 184 | |
99746d7b | 185 | =item L<http://wiki.kldp.org/Translations/html/UTF8-Unicode-KLDP/UTF8-Unicode-KLDP.html> |
642fd4ec | 186 | |
5a310f9b | 187 | 유닉스/리눅스에서 유니코드와 UTF-8 사용에 대한 문답집(FAQ)의 한국어 번역 |
642fd4ec JH |
188 | |
189 | =back | |
190 | ||
97cef9f7 JH |
191 | =head1 SEE ALSO |
192 | ||
193 | L<Encode>, L<Encode::KR>, L<encoding>, L<perluniintro>, L<perlunicode> | |
194 | ||
195 | ||
642fd4ec JH |
196 | =head1 AUTHORS |
197 | ||
198 | Jarkko Hietaniemi E<lt>jhi@iki.fiE<gt> | |
5a310f9b | 199 | 신정식 E<lt>jshin@mailaps.orgE<gt> |
642fd4ec JH |
200 | |
201 | =cut |