Sunday, October 01, 2006
Perl, 한글 확장완성형 코드 영역 출력 - CP949 Code
확장 완성형은 그냥 완성형과 달리 너무 복잡하더군요. 그냥 완성형 코드의 사이사이 빈 공간에 글자들을 억지로 끼워 넣은 것이었습니다.
확장 완성형 영역들을 출력하는 프로그램을 만들었습니다. 확장 완성형에 대한 공식적인 자료를 입수하지 못했기에, 앞으로 보강이 필요한 프로그램입니다. 실무에 사용하기에는 완성도가 너무 낮습니다. 참고 용도로만 사용하시기 바랍니다.
MS사이트에서 CP949(확장 완성형) 코드 문서를 보았는데, 제목은 CP949 라고 되어 있었지만 엉뚱하게도 유니코드 표였습니다 -_-?
다음의 코드를 cp949area.pl 등의 이름으로 저장하고 액티브펄(ActivePerl)로 실행하면 결과가 나옵니다.
실행 결과:
cp949area.pl > out.txt
라고 하면 out.txt 라는 파일로, 실행 결과 화면이 저장됩니다.
▶▶ Perl, 한글 확장완성형 코드표 생성기 - Hangul Wansung Code Table Generator
▶▶ [Perl] 유니코드의 한글 낱자 11172자를 코드 번호와 함께 파일로 출력하기 - Unicode UTF-8
확장 완성형 영역들을 출력하는 프로그램을 만들었습니다. 확장 완성형에 대한 공식적인 자료를 입수하지 못했기에, 앞으로 보강이 필요한 프로그램입니다. 실무에 사용하기에는 완성도가 너무 낮습니다. 참고 용도로만 사용하시기 바랍니다.
MS사이트에서 CP949(확장 완성형) 코드 문서를 보았는데, 제목은 CP949 라고 되어 있었지만 엉뚱하게도 유니코드 표였습니다 -_-?
다음의 코드를 cp949area.pl 등의 이름으로 저장하고 액티브펄(ActivePerl)로 실행하면 결과가 나옵니다.
한글 확장 완성형 문자 영역 출력
#!/usr/bin/perl
use strict; use warnings;
=pod
########################################################################
Hangul cp949 (Wansung) Character Code Table Generator
완성형 코드의 특수 문자 영역 = " ":A1A1 ~ я:ACF1
특수문자 속의 한글 자모 영역 = ㄱ:A4A1 ~ ㆎ:A4FE
완성형 코드의 한글 음절 영역 = 가:B0A1 ~ 힝:C8FE
완성형 코드의 한자 영역 = 伽:CAA1 ~ 詰:FDFE
확장 완성형 한글 영역은 소스 코드 본문 참조. (똠방각하의 '똠'자 등)
(※ A1A1은 2바이트 공백 문자이며, 보이지 않음)
########################################################################
=cut
print "// 완성형 영역 문자 출력 (A1A1 ~ FEFE)\n";
&printCP949CodeArea(0xA1, 0xA1, 0xFE, 0xFE);
print "// 확장 완성형 Set 1-1 (8141 ~ A05A)\n";
&printCP949CodeArea(0x81, 0x41, 0xA0, 0x5A);
print "// 확장 완성형 Set 1-2 (8161 ~ A07A)\n";
&printCP949CodeArea(0x81, 0x61, 0xA0, 0x7A);
print "// 확장 완성형 Set 1-3 (8181 ~ A0FE)\n";
&printCP949CodeArea(0x81, 0x81, 0xA0, 0xFE);
print "// 확장 완성형 Set 2-1 (A141 ~ C65A)\n";
&printCP949CodeArea(0xA1, 0x41, 0xC6, 0x5A);
print "// 확장 완성형 Set 2-2 (A161 ~ C67A)\n";
&printCP949CodeArea(0xA1, 0x61, 0xC6, 0x7A);
print "// 확장 완성형 Set 2-3 (A181 ~ C6A0)\n";
&printCP949CodeArea(0xA1, 0x81, 0xC6, 0xA0);
########################################################################
# $i 는, 1번째 바이트 (Lead Byte) 의 범위
# $j 는, 2번째 바이트 (Trail Byte) 의 범위
#
# 모두 4개의 파라미터를 받는 서브루틴
#
# ...(영역시작 첫째바이트$_[0], 영역시작 둘째바이트$_[1], 영역끝 첫째바이트$_[2], 영역끝 둘째바이트$_[3])
sub printCP949CodeArea {
for (my $i = $_[0]; $i <= $_[2]; $i++) { # LeadByte (Left Byte)
for (my $j = $_[1]; $j <= $_[3]; $j++) { # TrailByte (Right Byte)
printf("%02X%02X: %c%c\n", $i, $j, $i, $j);
}
}
}
use strict; use warnings;
=pod
########################################################################
Hangul cp949 (Wansung) Character Code Table Generator
완성형 코드의 특수 문자 영역 = " ":A1A1 ~ я:ACF1
특수문자 속의 한글 자모 영역 = ㄱ:A4A1 ~ ㆎ:A4FE
완성형 코드의 한글 음절 영역 = 가:B0A1 ~ 힝:C8FE
완성형 코드의 한자 영역 = 伽:CAA1 ~ 詰:FDFE
확장 완성형 한글 영역은 소스 코드 본문 참조. (똠방각하의 '똠'자 등)
(※ A1A1은 2바이트 공백 문자이며, 보이지 않음)
########################################################################
=cut
print "// 완성형 영역 문자 출력 (A1A1 ~ FEFE)\n";
&printCP949CodeArea(0xA1, 0xA1, 0xFE, 0xFE);
print "// 확장 완성형 Set 1-1 (8141 ~ A05A)\n";
&printCP949CodeArea(0x81, 0x41, 0xA0, 0x5A);
print "// 확장 완성형 Set 1-2 (8161 ~ A07A)\n";
&printCP949CodeArea(0x81, 0x61, 0xA0, 0x7A);
print "// 확장 완성형 Set 1-3 (8181 ~ A0FE)\n";
&printCP949CodeArea(0x81, 0x81, 0xA0, 0xFE);
print "// 확장 완성형 Set 2-1 (A141 ~ C65A)\n";
&printCP949CodeArea(0xA1, 0x41, 0xC6, 0x5A);
print "// 확장 완성형 Set 2-2 (A161 ~ C67A)\n";
&printCP949CodeArea(0xA1, 0x61, 0xC6, 0x7A);
print "// 확장 완성형 Set 2-3 (A181 ~ C6A0)\n";
&printCP949CodeArea(0xA1, 0x81, 0xC6, 0xA0);
########################################################################
# $i 는, 1번째 바이트 (Lead Byte) 의 범위
# $j 는, 2번째 바이트 (Trail Byte) 의 범위
#
# 모두 4개의 파라미터를 받는 서브루틴
#
# ...(영역시작 첫째바이트$_[0], 영역시작 둘째바이트$_[1], 영역끝 첫째바이트$_[2], 영역끝 둘째바이트$_[3])
sub printCP949CodeArea {
for (my $i = $_[0]; $i <= $_[2]; $i++) { # LeadByte (Left Byte)
for (my $j = $_[1]; $j <= $_[3]; $j++) { # TrailByte (Right Byte)
printf("%02X%02X: %c%c\n", $i, $j, $i, $j);
}
}
}
실행 결과:
// 완성형 영역 문자 출력 (A1A1 ~ FEFE)
A1A1:
A1A2: 、
A1A3: 。
A1A4: ·
A1A5: ‥
A1A6: …
A1A7: ¨
A1A8: 〃
A1A9:
A1AA: ―
A1AB: ∥
..이하 생략...
// 확장 완성형 Set 1-1 (8141 ~ A05A)
8141: 갂
8142: 갃
8143: 갅
8144: 갆
8145: 갋
8146: 갌
8147: 갍
8148: 갎
8149: 갏
814A: 갘
814B: 갞
814C: 갟
..이하 생략...
// 확장 완성형 Set 1-2 (8161 ~ A07A)
8161: 갵
8162: 갶
8163: 갷
8164: 갺
8165: 갻
8166: 갽
8167: 갾
8168: 갿
8169: 걁
816A: 걂
816B: 걃
816C: 걄
..이하 생략...
// 확장 완성형 Set 1-3 (8181 ~ A0FE)
8181: 걖
8182: 걗
8183: 걙
8184: 걚
8185: 걛
8186: 걝
8187: 걞
8188: 걟
8189: 걠
818A: 걡
818B: 걢
818C: 걣
818D: 걤
818E: 걥
818F: 걦
..이하 생략...
// 확장 완성형 Set 2-1 (A141 ~ C65A)
A141: 좥
A142: 좦
A143: 좧
A144: 좩
A145: 좪
A146: 좫
A147: 좬
A148: 좭
A149: 좮
A14A: 좯
A14B: 좰
A14C: 좱
A14D: 좲
..이하 생략...
// 확장 완성형 Set 2-2 (A161 ~ C67A)
A161: 죂
A162: 죃
A163: 죅
A164: 죆
A165: 죇
A166: 죉
A167: 죊
A168: 죋
A169: 죍
A16A: 죎
A16B: 죏
A16C: 죐
A16D: 죑
A16E: 죒
A16F: 죓
A170: 죖
..이하 생략...
// 확장 완성형 Set 2-3 (A181 ~ C6A0)
A181: 죦
A182: 죧
A183: 죨
A184: 죩
A185: 죪
A186: 죫
A187: 죬
A188: 죭
A189: 죮
A18A: 죯
A18B: 죰
A18C: 죱
A18D: 죲
A18E: 죳
A18F: 죴
..이하 생략...
A1A1:
A1A2: 、
A1A3: 。
A1A4: ·
A1A5: ‥
A1A6: …
A1A7: ¨
A1A8: 〃
A1A9:
A1AA: ―
A1AB: ∥
..이하 생략...
// 확장 완성형 Set 1-1 (8141 ~ A05A)
8141: 갂
8142: 갃
8143: 갅
8144: 갆
8145: 갋
8146: 갌
8147: 갍
8148: 갎
8149: 갏
814A: 갘
814B: 갞
814C: 갟
..이하 생략...
// 확장 완성형 Set 1-2 (8161 ~ A07A)
8161: 갵
8162: 갶
8163: 갷
8164: 갺
8165: 갻
8166: 갽
8167: 갾
8168: 갿
8169: 걁
816A: 걂
816B: 걃
816C: 걄
..이하 생략...
// 확장 완성형 Set 1-3 (8181 ~ A0FE)
8181: 걖
8182: 걗
8183: 걙
8184: 걚
8185: 걛
8186: 걝
8187: 걞
8188: 걟
8189: 걠
818A: 걡
818B: 걢
818C: 걣
818D: 걤
818E: 걥
818F: 걦
..이하 생략...
// 확장 완성형 Set 2-1 (A141 ~ C65A)
A141: 좥
A142: 좦
A143: 좧
A144: 좩
A145: 좪
A146: 좫
A147: 좬
A148: 좭
A149: 좮
A14A: 좯
A14B: 좰
A14C: 좱
A14D: 좲
..이하 생략...
// 확장 완성형 Set 2-2 (A161 ~ C67A)
A161: 죂
A162: 죃
A163: 죅
A164: 죆
A165: 죇
A166: 죉
A167: 죊
A168: 죋
A169: 죍
A16A: 죎
A16B: 죏
A16C: 죐
A16D: 죑
A16E: 죒
A16F: 죓
A170: 죖
..이하 생략...
// 확장 완성형 Set 2-3 (A181 ~ C6A0)
A181: 죦
A182: 죧
A183: 죨
A184: 죩
A185: 죪
A186: 죫
A187: 죬
A188: 죭
A189: 죮
A18A: 죯
A18B: 죰
A18C: 죱
A18D: 죲
A18E: 죳
A18F: 죴
..이하 생략...
cp949area.pl > out.txt
라고 하면 out.txt 라는 파일로, 실행 결과 화면이 저장됩니다.
▶▶ Perl, 한글 확장완성형 코드표 생성기 - Hangul Wansung Code Table Generator
▶▶ [Perl] 유니코드의 한글 낱자 11172자를 코드 번호와 함께 파일로 출력하기 - Unicode UTF-8
tag: perl
Perl | 펄
표준글자에 빠진 글자들을 빈칸에 듬성듬성 집어넣었는지라 맞춤법 검사에도 지장이 많죠. 프로그래밍을 배우지 않았어도 확실히 드러나는 현실에 전 글을 확장완성형 보다는 간단한 공식으로 글자코드를 판단하기가 가능한 유니코드를 선호하는 편입니다-_-a.
확장완성형이라는 것이 참 골치아프더군요. (+_+; 유니코드가 널리 쓰였으면 합니다.
(∩_∩)
<< Home