본문 바로가기
Qt

[Qt] 한글깨짐 현상(파일입출력)

by 목가 2016. 7. 28.
반응형

Qt 에서 파일 입출력시에 한글이 깨져서 읽히는 경우가 있다. 


다방면으로 삽질한 결과 해결방법을 찾을 수 있었다. 


원인 : Qt 에서 QString 에 담겨진 한글내용을 파일로 저장하는 경우에 인코딩 형식이 달라 한글이 깨진다. 

해결 : QString 을 UTF-8 형식으로 변경한 후 파일을 저장한다. 

       예) QString::fromUtf8(str, strlen(str));


인터넷을 보면 코덱을 변경해라 뭘 해라 등등 많은데 Utf8로 변경하고 저장한뒤에 그냥 읽어오면 정상적으로 되는 것을 확인 할 수 있다. 


근데 특이한 점은 textEdit 내용을 QString 으로 가져와서 바로 파일 저장시에는 한글이 깨지지 않는다. (-_-??)

str = ui->textEdit->toPlainText();



sample code

QString StrToQString(char * str)
{
    return QString::fromUtf8(str,strlen(str));
}

void MainWindow::on_pushButton_write_clicked()
{
    QFile file("test.txt");
    QString str;
    QString str2;
    QTextCodec *codec = QTextCodec::codecForLocale();

    //str = ui->textEdit_write->toPlainText();
    str = StrToQString("하이,asdklfj,안녕");
    str2 = codec->toUnicode(str.toLocal8Bit());
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        return;
    }

    QTextStream out(&file);
    out << str2 << "\n";
}

void MainWindow::on_pushButton_read_clicked()
{
    QFile file("test.txt");
    QString str;

    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        return;
    }

    QTextStream in(&file);
    str = in.readLine();

    ui->textEdit_read->append(str);
    //    ui->textEdit_read->append();

}


반응형

'Qt' 카테고리의 다른 글

[Qt] Sql 사용법(Table 생성, 검색, 저장)  (0) 2016.07.31
[Qt] 디자이너에서 탭 순서 바꾸기(change tab order)  (0) 2016.07.31
[Qt] Sql 연동하기  (0) 2016.07.29
[Qt] Dialog 종료  (0) 2016.07.29
[Qt] Dialog (다이얼로그 추가)  (0) 2016.07.29

댓글