在默認情況下,Qt 以 Unicode 格式處理文本字符,因此,字符本身是不會有問題的。之所以出現亂碼,原因在於 Qt 不知道將 Unicode 字符以何種方式顯示出來。 文本文件含有簡體中文,應指定為GBK。
void Widget::readFromFile() { //指定為GBK QTextCodec *codec = QTextCodec::codecForName("GBK"); //打開文件 QFile file("1.txt"); //如果打開文件失敗,直接退出 if(!file.open(QIODevice::ReadOnly|QIODevice::Text)) return; //當未到達文件結束位置 while(!file.atEnd()) { //讀取一行文本數據 QByteArray line = file.readLine(); //將讀取到的行數據轉換為Unicode QString str = codec->toUnicode(line); //將得到的字符設置到編輯框中顯示 ui->edit->append(str); } }
