开发者社区> 问答> 正文

Qt程序,从外部的文本读取汉字存进QString,如何让其转换成unicode:报错

系统使用GB2312编码,不作任何处理,使用

 QString fileName = QFileDialog::getOpenFileName(this,tr("存入汉语"));
 QFile LoadTxt(fileName);

 QTextStream in(&LoadTxt);

 QString line = in.readLine();

这时line中是使用GB2312编码汉字,而QString使用unicode编码,恰巧都是两个字节,所以能存的进去,但实际上line是错的,该如何转换?

我知道,如果不用从外部读入的话用

 QString strr=QString::fromLocal8Bit("你");

就行,这时strr中是存放的unicode编码的汉字;

展开
收起
kun坤 2020-06-06 15:52:15 893 0
1 条回答
写回答
取消 提交回答
  • QByteArray text = LoadTxt.readAll();
    QTextCodec *codec = QTextCodec::codecForName("GB2312");
    QString in = codec->toUnicode(text);



    ######自己设置实例化转码器就OK了,不知对你有没有用######

    #include <QtCore/QCoreApplication>
    #include <QtCore/QFile>
    #include <QtCore/QTextStream>
    #include <QtCore/QTextCodec>
    #include <iostream>
    #include <QDebug>
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    	QCoreApplication a(argc, argv);
    	QFile file("test.txt");
    	if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    	{
    		cout << "open error" << endl;
    		return -1;
    	}
    	QTextStream textInput(&file);
    	QString lineStr;
    	while (!textInput.atEnd())
    	{
    		textInput.setCodec("utf-8");
    		lineStr = textInput.readLine();
    		//cout << lineStr.toStdString() << endl;
    		qDebug() << lineStr << endl;
    	}
    	file.close();
    	return a.exec();
    }



    ######

    QTextStream::setCodec


    2020-06-06 15:52:20
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载