하니맨 님이 쓰신 글 :
:
: hanja2hangl("漢字가 있는 部分을 한글로 바꿉니다.")
: -> "한자가 있는 부분을 한글로 바꿉니다."
:
: 이렇게 변환해 주는 함수가 16비트에서는 라이브러리 형태로 제공해 준 분이 있었습니다만,
: 빌더에서 쓸 수 있는 한자->한글 변환 기능의 함수가 있을까요?
글쎄요.. 있는지는 잘 모르겠지만
윈도우에서 사용되는 완성형 한글은 KSC5601을 기초로 사용되어집니다.
다음과 같은 범위가 지정되어있죠
코드값 (16진수) 내용
A1A1 ~ A2FE 구두점, 기호 ('※', '☎', ...)
A3A1 ~ A3FE 전각 아스키 ('A', 'B', '*', ...)
A4A1 ~ A4FE 2벌식 한글 자모 ('ㄱ', 'ㄲ', ...)
A5A1 ~ A9FE 로마 숫자, 그리스어, 기타 기호
AAA1 ~ ABFE 일본어 (히라가나, 카타카나) ('あ', 'あ', ..., 'ア', 'ア', ...)
ACA1 ~ ACFE 소련어
B0A1 ~ C8FE 한글 음절 ('가', '각', ...) (2350 자)
CAA1 ~ FDFE 한자 (4888 자) ('伽', '佳', '假', ...)
http://camars.kaist.ac.kr/~dtkim/java/encoding.html
한자가 0xcaa1부터 시작하므로 한글자씩 읽어 가며 치환하는 함수를 만들면 될거 같습니다.
예를 들자면
AnsiString aa = "家";
AnsiString bb = "";
if ( ( aa.c_str()[0] >= 0xffffffca
|| aa.c_str()[0] <= 0xfffffffd
)
&& ( aa.c_str()[1] >= 0xffffffa1
|| aa.c_str()[1] <= 0xfffffffe
)
)
bb = "가";
;
ShowMessage(bb );
이런식이 되겠죠. 한문의 가 부분의 범위와 한글 가와 맵핑테이블을 만드는게
귀찮기는 하겠지만..
잘은 모르지만 제공되던 라이브러리 역시 이와 같은 방법이거나,
혹은 모든 한자에 대한 리소스 테이블을 만들고서 한글과 맵핑시킨후 서치해서
한글로 변환하지 않았을까 생각합니다.