한글 자소 분리 문제 해결하기
Post

한글 자소 분리 문제 해결하기

Problem

Mac 에서 등록한 파일들의 한글 DB 검색이 되지 않았다.

  1. 한글 파일명으로 된 파일 업로드
  2. 파일명을 추출하여 DB에 저장
  3. DB에서 한글 검색이 안됨

Cause

Mac과 Windows의 한글 정규화 방식이 다름으로 인해 나타난 현상이다.

구분사용설명예제
MacNFD모든 음절을 분해하여 자모 코드를 이용하여 저장하는 방식한 => ㅎㅏㄴ
Windows NFC모든 음절을 분해하고 다시 결합하여 저장하는 방식한 => 한
HtmlNFC(default)  

한글을 변수에 저장하면 NFC 방식으로 정규화되는 것을 볼 수 있다.
하지만 Mac 에서 등록한 첨부파일명을 추출하면 NFD 방식으로 되어 있으므로 NFC 로 방식 변환이 필요하다.

1
2
3
4
5
6
let a = '사과';
let b = a.normalize('NFC');
let c = a.normalize('NFD');

console.log(a===b); // true
console.log(a===c); // false

Solution

db 저장 전에 normalize를 통해 NFC로 변경해 준다.

1
let documentTitle = fileName.normalize('NFC');