[질문] Unicode와 UTF-8 변환

crashpot의 이미지

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:

keizie의 이미지

ASCII는 거의 모든 인코딩의 부분집합으로 들어갑니다.
따라서 따로 변환이랄 게 없습니다.

솔라리스엔 iconv 같은 게 없습니까?

큰괭이의 이미지

?

taeyeung의 이미지

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);

를 구현하시면 되겠지요.

pynoos의 이미지

Quote:

제가 가지고 있는 소스는 unsigned char* 형의 Unicode 문자열을 입력받아서 UTF-8로 변환하는 것입니다.

unsigned char * 형의 Unicode라는 말은 그 내용이 ucs2나 ucs4 라는 말인가요? 그렇다면 크기가 이상하군요...

-----------------

solaris에도 iconv가 기본적으로 설치됩니다.
2.5.1 정도로 옛날것이 아니라면, utf, ucs 계열 변환 module도 존재합니다.

제가 사용하는 machine에서는

man -s 3 iconv

으로 정보를 구할수있습니다.

고생하세요..~~!

crashpot의 이미지

제가 3일동안 삽질을 하고 있었네요.

정답은 iconv 였습니다.

시스템 명령어 뿐 아니라 C Library 역시 존재하더군요.

정말 감사합니다. 감사합니다. :lol: :lol: