[질문] Unicode와 UTF-8 변환
글쓴이: crashpot / 작성시간: 금, 2003/03/14 - 11:10오전
Solaris 상에서 문자열을 soap으로 Window 플랫폼에 전달하는 프로그램을 작성중입니다.
soap 프로토콜 특성상 한글문자열 전송시 UTF-8 로 인코딩하여 전달을 해야하는데요..
Unicode 문자열을 UTF-8로 변환하는 코드를 구하여 약간 수정을 하였습니다.
남은 문제는 ANSI 문자열을 Unicode로 변환해야 하는것인데요.
방법을 모르겠네요.
제가 가지고 있는 소스는 unsigned char* 형의 Unicode 문자열을 입력받아서 UTF-8로 변환하는 것입니다.
해서 궁금한 것은..
1. char* 형을 mbstowcs() 를 이용하여 wchar_t* 형으로 바꾸면 그것이 Unicode 형으로 변환하는 것인가.
2. 그것이 맞다면, wchar_t* 를 unsigned char* 형으로는 어떻게 변환하는 것인가..
3. 이런 방법 외에 char* 형의 문자열을 UTF-8 로 인코딩 하는 다른 좋은 방법이 있는가..
입니다.
3일째 헤매고 있습니다. MFC의 경우 방대한 클래스와 메소드를 제공하기 때문에 간단히 처리되는데요..
최악의 경우 MFC 의 라이브러리를 UNIX 로 직접 매핑시키는 수밖에 없는건지요. 이것도 장난이 아닐것 같고..
조언 간절히 부탁드립니다.
미리 감사합니다. :oops:
Forums:
ASCII 말입니까?
ASCII는 거의 모든 인코딩의 부분집합으로 들어갑니다.
따라서 따로 변환이랄 게 없습니다.
솔라리스엔 iconv 같은 게 없습니까?
여기서 원하시는 것을 찾을 수 있을 듯합니다. ^.^
http://www.cl.cam.ac.uk/~mgk25/unicode.html
함 가서 보시져 ^.^
?
ascii -> unicode(ucs2)
char ascii[4] = "abc";
이런 문자열은
ascii[0] = 'a';
ascii[1] = 'b';
ascii[2] = 'c';
ascii[3] = '\0';
이렇겠죠
반면에 unicode에 같은 문자열은
char unicode[8];
unicode[0] = 0;
unicode[1] = 'a';
unicode[2] = 0;
unicode[3] = 'b';
unicode[4] = 0;
unicode[5] = 'c';
unicode[6] = 0;
unicode[7] = 0;
이렇게 들어 갑니다.
즉 ascii문자열에 앞쪽에 0이 한 개씩 들어간다고 보면 되겠죠
그래서
AsciiToUnicode( unsigned char *ascii, unsigned char *unicode, int *size);
를 구현하시면 되겠지요.
[quote]제가 가지고 있는 소스는 unsigned char* 형의
unsigned char * 형의 Unicode라는 말은 그 내용이 ucs2나 ucs4 라는 말인가요? 그렇다면 크기가 이상하군요...
-----------------
solaris에도 iconv가 기본적으로 설치됩니다.
2.5.1 정도로 옛날것이 아니라면, utf, ucs 계열 변환 module도 존재합니다.
제가 사용하는 machine에서는
man -s 3 iconv
으로 정보를 구할수있습니다.
고생하세요..~~!
---
http://coolengineer.com
답변주신분들 모두께 감사드립니다.
제가 3일동안 삽질을 하고 있었네요.
정답은 iconv 였습니다.
시스템 명령어 뿐 아니라 C Library 역시 존재하더군요.
정말 감사합니다. 감사합니다. :lol: :lol:
댓글 달기