[질문] 유니코드(리틀엔디언) 한글 파일을 Hex 코드로 변환하려고 합니다
안녕하세요~
유니코드의 개념이 잘 잡혀 있지 않은 초보입니다...
기존에 ASCII구성된 txt 파일(한글포함)을 hex로 변환하여 파일로 저장,
이것을 배열에 읽어들여 숫자/기호/영문/한글로 출력해주는 코드를 사용했습니다
while( (ch = fgetc(fp_r)) != EOF )
{
sprintf(tmp_print, "%8x", ch);
if( *(tmp_print+6) == ' ' )
fprintf(fp_w, "0x0");
else
fprintf(fp_w, "0x%.1s", tmp_print+6);
fprintf(fp_w, "%.1s", tmp_print+7);
if(i != 0 && !(i % 16))
fprintf(fp_w, "\r\n,");
else
fprintf(fp_w, ",");
++i;
}
이런식으로 간단히 읽어들여서 앞에 0x만 붙여줘서 배열에 삽입했습니다...
그런데 이번에 유니코드로 된 파일을 사용해야되는 경우가 생겨서 이렇게 질문 드립니다.
문제는 지금 사용하는 프로그램의 출력부분이 ASCII쪽으로만 대응하기 때문에
유니코드 파일을 읽어들여서 이것을 ASCII로 변환, hex로 저장하고 싶은데요..
감을 못잡겠습니다
힌트라든지 위에 해당하는 소스코드를 알고 계신분은 리플을 부탁드립니다.
뭐.. 단순히 유니코드로된 파일을 다른이름으로 저장하기하여 ANSI로 저장해서 사용하라고하면 할말은 없구요 //:(
iconv, icu
iconv, icu 라이브러리를 활용하심이?
윗분 말씀대로 iconv
윗분 말씀대로 iconv 라는 유틸리티가 코드 포멧을 바꿔주는 역할을 하므로
이용하시면 되겠습니다.
쉘스크립트로 님의 프로그램 전단계에서 iconv로 변환과정을 거치면 간단하겠는데요.
만약 그 유니코드 파일내용에 한글이 없이 단순 알파벳으로만 되있다면
직접 작성하는것도 쉬우나 약11만자가 넘는 유니코드 한글코드를 KSC5601코드로
일일이 1:1 매핑하는 테이블을 만드셔야 합니다.
단순한 계산으로 되는 코드변환이 아니므로 노가다 작업이고,
한글뿐 아니라 다른 코드페이지의 문자가 자꾸 포함된다면
그때마다 수정해야하니 굳이 만들어 쓸 필요는 없어 보입니다.
댓글 달기