스마트웹앱콘텐츠전문가/JAVA

전화번호 처리의 필수 라이브러리: libphonenumber로 E.164 표준 처리하기

9D4U 2025. 3. 11. 11:00
728x90
반응형

국제 전화번호를 처리할 때 중요한 점은 E.164 표준에 맞춰 전화번호를 정확히 파싱하고, 유효성 검사를 하며, 필요한 포맷으로 변환하는 것입니다. Java 개발자는 이러한 작업을 처리하기 위해 Google의 libphonenumber 라이브러리를 사용할 수 있습니다. 이 라이브러리는 전 세계의 전화번호를 처리할 수 있는 강력한 도구로, 특히 E.164 형식으로 변환하는 기능을 제공합니다. 이번 글에서는 Java에서 libphonenumber를 활용해 E.164 형식으로 전화번호를 처리하는 방법을 자세히 설명하겠습니다.

 

 

 


1. E.164 표준 이해하기

 

E.164는 국제 전화번호의 표준 형식을 정의하는 규격입니다. 이 표준은 전화번호의 최대 길이를 15자리로 제한하며, 각 전화번호는 국가 코드, 지역 코드, 가입자 번호로 구성됩니다. 전화번호는 항상 "+" 기호로 시작하며, 국가 코드 뒤에는 지역 번호와 가입자 번호가 이어집니다.

E.164 형식의 예시는 다음과 같습니다:

  • +1 212 555 1234 (미국 뉴욕)
  • +44 20 7946 0958 (영국 런던)
  • +82 10 1234 5678 (한국)

이와 같은 표준을 따르는 전화번호는 국제적으로 일관된 형식을 제공하며, 여러 국가 간 전화 시스템을 호환되게 만듭니다.

 

 

E.164란 무엇인가?

E.164는 PSTN의 각 장치가 전 세계적으로 고유한 번호를 갖도록 하여 통화 전달 가능성을 보장하는국제전화 번호체계 표준  입니다.  (PSTN : Public Switched Telephone Network) = 공중 교환 전화망)    

9d4u.tistory.com

 

 

 


2. libphonenumber 라이브러리 소개

 

Java에서 E.164 전화번호를 처리할 때 가장 많이 사용되는 라이브러리는 Google의 libphonenumber입니다. 이 라이브러리는 전화번호를 파싱하고, 유효성 검사를 수행하며, 국가별 전화번호 포맷을 제공하는 등 다양한 기능을 지원합니다. 특히 E.164 형식으로 변환하는 기능이 뛰어나, 국제 전화를 처리하는 시스템에서 매우 유용합니다.

 

 

2.1 libphonenumber의 주요 기능

  • 전화번호 파싱: 문자열로 된 전화번호를 파싱하여 객체로 변환합니다.
  • 유효성 검사: 전화번호가 해당 국가에서 유효한 번호인지 확인합니다.
  • 전화번호 포맷팅: 전화번호를 E.164 형식뿐만 아니라, 국가별 표준 형식으로도 변환할 수 있습니다.
  • 국가 코드 추출: 전화번호에서 국가 코드를 추출할 수 있습니다.

 

 

 


3. Maven으로 libphonenumber 라이브러리 추가하기

 

libphonenumber를 사용하려면 먼저 Maven 프로젝트에 해당 라이브러리를 추가해야 합니다. pom.xml 파일에 아래 의존성을 추가하세요:

<dependency>
    <groupId>com.googlecode.libphonenumber</groupId>
    <artifactId>libphonenumber</artifactId>
    <version>8.12.40</version>  <!-- 최신 버전으로 변경 가능 -->
</dependency>

 

 

반응형

 

 


4. Java에서 E.164 형식으로 전화번호 변환하기

 

libphonenumber를 사용하여 전화번호를 E.164 형식으로 변환하는 방법은 매우 간단합니다. 아래 예시를 통해 이 과정을 확인해 보겠습니다.

 

 

4.1 전화번호 파싱 및 E.164 형식으로 변환

import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.PhoneNumber;
import com.google.i18n.phonenumbers.NumberParseException;

public class PhoneNumberExample {
    public static void main(String[] args) {
        // PhoneNumberUtil 객체 생성
        PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
        
        try {
            // 전화번호 파싱 (예: "+82 10 1234 5678")
            PhoneNumber phoneNumber = phoneNumberUtil.parse("+82 10 1234 5678", "KR");
            
            // E.164 형식으로 전화번호 출력
            String formattedNumber = phoneNumberUtil.format(phoneNumber, com.google.i18n.phonenumbers.PhoneNumberFormat.E164);
            System.out.println("E.164 형식: " + formattedNumber);
        } catch (NumberParseException e) {
            System.out.println("잘못된 전화번호 형식입니다.");
        }
    }
}

위 코드를 실행하면 E.164 형식으로 변환된 전화번호를 출력할 수 있습니다. 예를 들어, +82 10 1234 5678를 E.164 형식으로 변환하면 +821012345678이 출력됩니다.

 

 

 


5. 전화번호 유효성 검사

 

전화번호가 유효한지 확인하려면 isValidNumber() 메서드를 사용할 수 있습니다. 이 메서드는 주어진 전화번호가 해당 국가에서 유효한 번호인지를 검사합니다.

 

5.1 전화번호 유효성 검사 예시

import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.PhoneNumber;
import com.google.i18n.phonenumbers.NumberParseException;

public class PhoneNumberValidationExample {
    public static void main(String[] args) {
        PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
        
        try {
            PhoneNumber phoneNumber = phoneNumberUtil.parse("+82 10 1234 5678", "KR");
            
            if (phoneNumberUtil.isValidNumber(phoneNumber)) {
                System.out.println("전화번호는 유효합니다.");
            } else {
                System.out.println("전화번호가 유효하지 않습니다.");
            }
        } catch (NumberParseException e) {
            System.out.println("잘못된 전화번호 형식입니다.");
        }
    }
}

위 코드에서 isValidNumber() 메서드는 해당 전화번호가 실제로 유효한지 확인하고, 그 결과를 출력합니다.

 

 


6. 전화번호 포맷팅: 국가별 형식으로 변환

 

libphonenumber 라이브러리는 전화번호를 국가별 표준 형식으로도 변환할 수 있습니다. 예를 들어, +82 10 1234 5678을 한국의 일반 전화번호 형식으로 변환하려면 다음과 같이 할 수 있습니다.

String formattedNumber = phoneNumberUtil.format(phoneNumber, com.google.i18n.phonenumbers.PhoneNumberFormat.NATIONAL);
System.out.println("국가별 포맷: " + formattedNumber);

이 코드는 +82 10 1234 5678을 010-1234-5678과 같은 형식으로 출력합니다.

 

 


 

 

 

Java에서 E.164 형식의 전화번호를 처리하는 데 libphonenumber 라이브러리는 매우 유용한 도구입니다. 이 라이브러리를 사용하면 전화번호를 쉽게 파싱하고, 유효성 검사를 하며, E.164 형식으로 변환하는 작업을 간단하게 처리할 수 있습니다. 또한, 전화번호를 국가별 포맷으로 변환하는 기능도 제공하여, 다양한 국제 전화 시스템과의 호환성을 확보할 수 있습니다.

따라서, 국제 전화 시스템을 구축하거나 다양한 국가의 전화번호를 처리해야 하는 Java 애플리케이션에서는 libphonenumber를 적극적으로 활용할 수 있습니다. 이 라이브러리는 Google에서 관리하고 있어 신뢰성도 높고, 지속적으로 업데이트되기 때문에, 전화번호 관련 기능을 개발할 때 매우 효과적인 솔루션이 됩니다.

728x90