본문 바로가기

스터디/백엔드

[PHP] 한글 NFD 정규화 : MAC 한글 깨짐(자소분리)현상

  • Mac에서는 한글을 저장할 때 NFD 방식을 사용하지만, Windows에서는 NFC 방식을 사용 ⇒ Mac에서 NFD 방식으로 저장된 데이터를 Windows에서 확인할 때 자소분리 현상이 발생.
  • PHP 5.3 부터 Normalizer 클래스를 사용하여 NFD 정규화 가능

 

Normalizer Class 설치

 # Linux 기반 시스템 (php7.x-intl 등 php 버전에 따라 다를 수 있으니 알맞게 설치할 것)
 - apt-get install php-intl (for ubuntu-based linux)
 - yum install php-intl (for CentOS)

 

NFD 정규화 처리

if (class_exists('Normalizer')) {
    if (Normalizer::isNormalized($value, Normalizer::FORM_D)) { 
    # isNormalized 생략가능, NFC 방식사용된 데이터를 normalize해도 이상없음.
        $value= Normalizer::normalize($value, Normalizer::FORM_C);
    }
}