Perl/펄] 한글 글자 개수, 바이트 수 (UTF-8 유니코드 문자열) 구하기; Unicode Hangul Byte
Thursday, January 04, 2007
스폰서 링크문자열 길이 구하는 함수인 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
☞ Perl(펄)
한글 글자 개수를 구하려면, 우선 소스 파일을 "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
☞ Perl(펄)
Post a Comment
<< Home