반응형
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 |
댓글