Qt 将读取数据转换为utf-8格式

一、问题简述

之前碰到过这样的问题,就是一个文本数据它不是utf-8格式的数据,因此在读取该数据之后,将其转换为QJsonDocument对象总是不成功。

	QFile file(filePath);
	//打开文件
	if (!file.open(QIODevice::ReadOnly)) {
		file.close(); 
		return;
	}

	//加载所有数据
	QByteArray wholeData = file.readAll(); 
	file.close();
	//转换为QJsonDocument
	QJsonParseError error;
	QJsonDocument jsonDoc = QJsonDocument::fromJson(wholeData,&error);

二、解决方法

到最后找了一圈使用下面这种方式可以将其正确转换,这里记录一下:

	QFile file(filePath);
	//打开文件
	if (!file.open(QIODevice::ReadOnly)) {
		file.close(); 
		return;
	}

	//加载所有数据
	QByteArray wholeData = file.readAll(); 
	file.close();
	//转换为QJsonDocument
	QJsonParseError error;
	QTextCodec* utf8 = QTextCodec::codecForName("UTF-8"); 
	QString content = utf8->toUnicode(wholeData.constData()); 
	QJsonDocument jsonDoc = QJsonDocument::fromJson(content.toUtf8(),&error);
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt中,要读取Linux文件并将其转换为不同的编码格式,可以使用QFileQTextStream类。首先,使用QFile类打开要读取的文件,指定打开文件的的方式和路径。然后,使用QTextStream类将文件内容读入到程序中,可以使用readAll()函数将整个文件一次性读入或者使用readLine()函数按行读取文件内容。 要将转换编码,可以使用QTextCodec类。首先,确定文件的原始编码格式,然后使用QTextCodec::codecForName()函数获得对应的编码格式对象。接下来,使用QTextCodec::toUnicode()函数将读取的文件内容转换为Unicode编码。 示例代码如下: ```cpp QFile file("/path/to/linux_file.txt"); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); // 设置原始编码格式 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); // 将文件内容按行读取并转换编码 while (!in.atEnd()) { QString line = codec->toUnicode(in.readLine().toUtf8()); // 进行后续的操作,比如输出到控制台或者进行字符串处理 qDebug() << line; } file.close(); } ``` 在上述例子中,我们假设Linux文件的原始编码格式UTF-8。如果原始编码格式不是UTF-8,需要根据实际情况使用其他的编码格式。同时,根据实际文件内容,可能还需要对读取的内容进行进一步的处理,比如字符串操作或者数据解析等。 总之,通过使用Qt中的QFileQTextStream和QTextCodec类,我们可以方便地读取Linux文件并进行编码转换操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鱼BIGFISH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值