컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
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. 이런 에러가 납니다.)
#!/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 utf8" 이라는 것은, 펄 소스 파일 자체의 인코딩이, "UTF-8 유니코드"라는 뜻입니다.

do {... 라는 부분은. 유니코드 인코딩에서, 문자열의 길이를 구할 때, 바이트 수를 구하는 방법입니다. UTF-8 인코딩에서, 한글 1글자는 3바이트이기에 12가 나옵니다.


do 블록의 끝에 반드시 세미콜론(;)이 있어야 합니다. 그렇지 않으면, 그 뒤에 다른 코드가 있을 때 syntax error at ... (Missing semicolon on previous line?)... 이런 에러가 납니다.



▶▶ Perl/펄] 문자열 길이, 사이즈(글자 수/바이트 수) 구하기; String Length, Size

☞ Perl(펄)

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top