티스토리 뷰

반응형

라즈베리파이 Qt에서 한글은 UTF-8(유니코드)을 사용하고 있는데 프린트를 하기 위해 펌웨어를 사용하고 있는 인터페이스 보드로

전송하여 인쇄를 하니까 한글이 깨져서 나왔다. 

그래서 char를 hex로 변환시켜 '가'를 로그에 표시해 해봤더니

UTF-8(유니코드) - 0xEAB080 (3byte)

eucKR - 0xB0A1 (2byte)

가 나왔다. 보드쪽은 eucKR(KSC5601)를 사용하고 있기 때문이다.

그래서 Qt에 있는 코덱 변환 함수를 이용해 봤지만 여전히 깨져 나왔다.
 
그러던 iconv 함수를 이용한 C소스를 찾았고 성공했다^^

아~ 묵혔던 체증이 싹 풀리는거 같다 ㅋㅋ

// 한글 인코딩 UTF-8 -> eucKR
int utf82euckr(char *source, char *dest, int dest_size)
{
   iconv_t it;
   char *pout;
   size_t in_size, out_size;

   it = iconv_open("EUC-KR", "UTF-8");ㅋㅋ
   in_size = strlen(source);
   out_size = dest_size;
   pout = dest;

   iconv(it, &source, &in_size, &pout, &out_size);
   iconv_close(it);

   return(pout - dest);
}

// 사용방법
har Han[100];
memset(Han, 0, sizeof(Han));

utf82euckr("가나다", Han, sizeof(Han));
Send(han);

 

반응형

'프로그래밍 > Qt' 카테고리의 다른 글

투명 버튼  (0) 2019.06.11
한달 지난 로그 파일 지우기  (0) 2019.06.11
QSerialPort  (0) 2019.06.11
QTcpSocket isConnected  (0) 2019.06.11
폼안에 쓰레드 호출 함수 넣기  (0) 2019.06.11
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday