완성형 <-> 유니코드 변환은 2가지 방법이 있다.
1) KS 완성형 코드 <-> 유니코드 직접 변환
코드변환 테이블만 있으면 쉽게 변환 가능하다. 아래 소스에 코드변환 테이블 및 변환 프로그램 소스가 있다.
conv_uni2ksc.zip
2) 간접 변환 방법 -- 이 방법은 한글 음절 변환만 가능하다. 다른 문자들은 완성형 <-> 조합형 변환 과정에서 손실이 발생함.
조합형 <-> 유니코드 변환은 변환 테이블 없이 계산에 의해 가능하다.
완성형 -> 조합형 -> 유니코드
유니코드 -> 조합형 -> 완성형
<<참고>> 유니코드에서 한글 초성/중성/종성값 계산하는 방법 -- 0xAC00('가') 은 한글 유니코드 base값
cho = ((코드값 - 0xAC00) / 28) / 21) % 19
jung = ((코드값 - 0xAC00) / 28) % 21
jong = (코드값 - 0xAC00) % 28
위 cho, jung, jong값은 초성 19개(0~18), 중성 21개(0~20), 종성 28개(0~27)에 대한 값임.
- 초성: ㄱ(0), ㄲ(1), ㄴ(2), ㄷ(3), ㄸ(4), ㄹ, ㅁ, ㅂ, ㅃ, ㅅ, ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ(17), ㅎ(18)
- 중성: ㅏ(0), ㅐ(1), ㅑ(2), ㅒ(3), ㅓ(4), ㅔ(5), ㅕ, ㅖ, ㅗ, ㅘ, ㅙ, ㅚ, ㅛ, ㅜ, ㅝ, ㅞ, ㅟ, ㅠ, ㅡ, ㅢ(19), ㅣ(20)
- 종성: 없음(0), ㄱ(1), ㄲ(2), ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㅁ, ㅂ, ㅄ, ㅅ, ㅆ, ㅐ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ(26), ㅎ(27)