Thursday, January 04, 2007
Perl/펄] 한글 글자 개수, 바이트 수 (UTF-8 유니코드 문자열) 구하기; Unicode Hangul Byte
문자열 길이 구하는 함수인 length() 로, 한글 문자열의 길이를 구하면, "글자 개수"가 아닌 "바이트 수"가 나옵니다.
한글 글자 개수를 구하려면, 우선 소스 파일을 "UTF-8 유니코드"로 저장한 후,
use utf8;
이라는 프라그마(pragma)를 삽입하면 됩니다. (한글 완성형에서 한글 문자열의 글자수를 구하는 방법은, 제가 여러가지로 시도해 보았는데, 간단한 방법이 없었습니다. 한자와 전각문자까지 다 고려해야 하기에 상당히 어렵더군요. 유니코드로 하니 간단하게 처리되었습니다.)
(다음 코드는 UTF-8 인코딩으로 저장해야 합니다. 그렇지 않으면 Malformed UTF-8 character (unexpected continuation byte 0x8c, with no preceding start byte) at D:\Z\2.pl line 8. 이런 에러가 납니다.)
"use utf8" 이라는 것은, 펄 소스 파일 자체의 인코딩이, "UTF-8 유니코드"라는 뜻입니다.
do {... 라는 부분은. 유니코드 인코딩에서, 문자열의 길이를 구할 때, 바이트 수를 구하는 방법입니다. UTF-8 인코딩에서, 한글 1글자는 3바이트이기에 12가 나옵니다.
do 블록의 끝에 반드시 세미콜론(;)이 있어야 합니다. 그렇지 않으면, 그 뒤에 다른 코드가 있을 때 syntax error at ... (Missing semicolon on previous line?)... 이런 에러가 납니다.
▶▶ Perl/펄] 문자열 길이, 사이즈(글자 수/바이트 수) 구하기; String Length, Size
한글 글자 개수를 구하려면, 우선 소스 파일을 "UTF-8 유니코드"로 저장한 후,
use utf8;
이라는 프라그마(pragma)를 삽입하면 됩니다. (한글 완성형에서 한글 문자열의 글자수를 구하는 방법은, 제가 여러가지로 시도해 보았는데, 간단한 방법이 없었습니다. 한자와 전각문자까지 다 고려해야 하기에 상당히 어렵더군요. 유니코드로 하니 간단하게 처리되었습니다.)
한글 글자수 구하기 + 유니코드 바이트 수 얻기 예제 소스
(다음 코드는 UTF-8 인코딩으로 저장해야 합니다. 그렇지 않으면 Malformed UTF-8 character (unexpected continuation byte 0x8c, with no preceding start byte) at D:\Z\2.pl line 8. 이런 에러가 납니다.)
#!/usr/bin/perl
use strict; use warnings;
use utf8;
# 글자 수 구하기
my $s = "똠방각하";
print length($s), "\n";
# 출력 결과 (유니코드 글자 수): 4
# 바이트 수 구하기
do {
use bytes;
print length($s), "\n";
# 출력 결과 (문자열의 바이트 수): 12
};
use strict; use warnings;
use utf8;
# 글자 수 구하기
my $s = "똠방각하";
print length($s), "\n";
# 출력 결과 (유니코드 글자 수): 4
# 바이트 수 구하기
do {
use bytes;
print length($s), "\n";
# 출력 결과 (문자열의 바이트 수): 12
};
"use utf8" 이라는 것은, 펄 소스 파일 자체의 인코딩이, "UTF-8 유니코드"라는 뜻입니다.
do {... 라는 부분은. 유니코드 인코딩에서, 문자열의 길이를 구할 때, 바이트 수를 구하는 방법입니다. UTF-8 인코딩에서, 한글 1글자는 3바이트이기에 12가 나옵니다.
do 블록의 끝에 반드시 세미콜론(;)이 있어야 합니다. 그렇지 않으면, 그 뒤에 다른 코드가 있을 때 syntax error at ... (Missing semicolon on previous line?)... 이런 에러가 납니다.
▶▶ Perl/펄] 문자열 길이, 사이즈(글자 수/바이트 수) 구하기; String Length, Size
tag: perl
Perl | 펄
<< Home