유니코드를 변형하려면...

diene의 이미지

안녕

이 유니코드를 리눅스상에서 '안녕'이란 글자로 변환하려고 합니다.

윈도우상에서

#include <comdef.h>
void main()
{
    wchar_t   wstr[2] = {0xAC00, NULL};
    _bstr_t    bstr = wstr;
    cout<<(LPCSTR)bstr;
}

이렇게 하면 0xAC00 이 한글로 바뀌어 출력됩니다.
하지만 리눅스상에서는 이 코드를 그대로 쓰면 에러가 납니다.

유니코드를 한글로 변형하려면 어떻게 해야합니까?

잔디인형의 이미지

유니코드 한글을 화면에 출력 하려면 유니코드 폰트를 써야 하고, KSC-5601(?) 같은 한글 코드는 그에 맞는 한글 폰트를 사용하여 화면에 표시해야 됩니다.

리눅스 배포판의 한글 폰트들은 기본적으로 KSC-5601 코드를 사용하므로 0xAC00에 해당하는 한글 폰트는 없습니다.(KSC-5601은 각 바이트에서 최상위 비트가 무조건 1로 설정되어 있습니다.)

유니코드 '0xAC00(가)'를 한글 코드 '0xB0A1(가)' 로 변환하여 한글을 출력 해야 합니다.

코드 변환은 iconv 함수를 이용하여 UCS-16을 EUC-KR로 변환하면 됩니다.

iconv로 검색해 보세요.