프로그램은 보통 vi 에서 작성하는데 vi 의 한글 코드는 KSC5601 이지만 qt 는 유니코드를 사용합니다. 이런 이유로 한글을 바로 출력하면 qt 에서는 깨져서 출력이됩니다.
한글을 출력하기 위해서는 3가지 방법이 있습니다.
- 매크로를 이용하는 방법
#include <qstring.h>
#define kor(str) QString::fromLocal8Bit(str)
QString str = "안녕하세요!!";
setCaption( toUniString( str));
- 코덱을 이용하는 방법
#include <qstring.h>
#include <qtextcodec.h>
QString toUniString(QString str)
{
QTextCodec * codec = QTextCodec::codecForName("eucKR");
QString localeStr = codec->toUnicode(str);return localeStr;
}
QString str = "Hello Word!! 안녕하세요!!";
setCaption( toUniString( str)); - QEucKrCodec 객체 사용
이 객체를 처음 보았을 때에는 야~ 우리나라 언어를 위한 코덱이 다있네하고 놀랬습니다. 모든 함수를 확인은 못했지만 일본어 코덱도 있더군요.
#include <qstring.h>
#include <qeuckrcodec.h>
QEucKrCodec* codec = new QEucKrCodec();
char* string="안녕하세요!!";
QString str = codec->toUnicode(string, strlen(string));
setCaption( str);