본문 바로가기

Programming

한글 초성 검색 방법

1. 완성형 한글 초성 추출을 위한 기본 정보

먼저 한글(가~힣)까지의 유니코드 범위는 U+AC00 ~ U+D7A3이다.
한글의 UTF-8 인코딩 길이는 3byte이다.
UTF-8 인코딩은 가변 길이 문자 인코딩 방식으로, 위의 한글 범위의 유니코드는 3바이트 길이를 가진다.
유니코드 U+0800 ~ U+FFFF범위의 UTF-8 인코딩 방식은 1110xxxx 10xxxxxx 10xxxxxx.
한글의 범위(U+AC00 ~ U+D7A3)는 U+0800 ~ U+FFFF에 해당한다.
한글의 초성, 중성, 종성 케이스는 아래와 같다.

  • 초성 19개
    ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ']
  • 중성 21개
    ['ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ']
  • 종성 28개
    ['','ㄱ','ㄲ','ㄳ','ㄴ','ㄵ','ㄶ','ㄷ','ㄹ','ㄺ','ㄻ','ㄼ','ㄽ','ㄾ','ㄿ','ㅀ','ㅁ','ㅂ','ㅄ','ㅅ','ㅆ','ㅇ','ㅈ','ㅊ','ㅋ',' ㅌ','ㅍ','ㅎ']

2. 초성 구하기 예시

'달'의 초성인 'ㄷ'을 구해본다.
한글의 첫 글자인 '가'(유니코드 U+AC00)의 10진수 값은 44032이다.
'달'의 유니코드 값은 U+B2EC(UTF8: 235, 139, 160)이고, 10진수 값은 45804이다.
45804 - 44032 = 1172
1172 / (21 * 28) = 3(초성의 인덱스, 0부터 시작)
위의 초성 19개 배열의 4번째 값이 '달'의 초성에 해당한다.
> 'ㄷ'

참조 : 

https://d2.naver.com/helloworld/19187

반응형