QT6.4 QTextStream 中℃写入CSV文件乱码问题

在QT6.4中使用QTextStream处理CSV文件时遇到℃符号显示为乱码的问题,解决方案是设置编码为QStringConverter::System。如果仍出现乱码,需在QT文本编辑器的选项中将文件编码设置为System。

QT6.4 QTextStream 中℃写入CSV文件乱码问题

问题现象

℃不能正常显示,显示乱码
在这里插入图片描述

解决方案

代码如下

in.setEncoding (QStringConverter::System);

如果设置了仍然不正常,请尝试设置qt文本编辑器的编码方式为System:

工具–选项–文本编辑器–行为(英文为behavior)–在右侧选项界面找到文件编码选项,设置为 System
在这里插入图片描述

结果显示

### Qt写入CSV文件时避免中文乱码的方法 为了确保在使用Qt写入CSV文件时不出现中文乱码,可以采取以下措施: 对于Qt版本6.4中的`QTextStream`处理特殊字符如℃时遇到的乱码问题,可以通过指定编码方式来解决。具体来说,在创建`QTextStream`对象之后立即设置其字符串编码为UTF-8,这能有效防止因默认编码不同而导致的乱码情况发生[^1]。 当涉及到从CSV文件向数据库导入数据并遭遇中文乱码的情况时,通常是因为CSV文件采用的是GBK编码格式,而目标数据库期望接收的是UTF-8编码的数据流。因此,应该先确认CSV文件的实际编码形式,并通过适当的方式将其转换为目标编码再执行后续操作;或者调整应用程序内部使用的文本编码标准以匹配外部资源的要求[^2]。 针对跨平台移植过程中可能出现的应用程序界面上以及导出CSV文件内的中文字符显示异常状况,可以在应用启动初期即Main函数内设定全局文本编解码器为UTF-8,以此统一整个项目中所涉及的文字处理逻辑。此外,考虑到最终用户可能使用不同的软件打开生成的结果文档(比如Excel vs WPS),还需要注意这些办公套件各自对特定编码的支持程度差异,从而做出相应的优化调整[^3]。 最后,如果仅仅是简单的温度单位符号“℃”,那么可以直接利用`QString::fromLocal8Bit()`方法将该符号转化为适合当前系统的本地化表示形式后再加入到待输出的内容当中去,这样也可以减少由于直接嵌入非ASCII字符所带来的潜在风险[^4]。 ```cpp // 设置全局编码为 UTF-8 #include <QTextCodec> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 将全局编码设为UTF-8 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec); ... } ``` 另外,在实际编写用于保存至CSV文件的数据之前,建议显式指明`QTextStream`应使用的编码规则如下所示: ```cpp QFile file("output.csv"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) return; QTextStream out(&file); out.setCodec("UTF-8"); // 显式声明编码为UTF-8 ... file.close(); ``` 以上做法能够有效地帮助开发者规避掉大部分由编码不一致引发的问题,保障了多语言环境下尤其是含有复杂脚本文字的信息得以正确无误地被记录下来。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值