读取中文文件内容的测试

普歌-云言团队-Spring Boot配置 : properties配置文件中文乱码 执行SpringBoot测试类, 读取properties配置文件中的内容,读取到的是中文乱码 因为idea默认使用的是utff-8, 而properties文件使用的是ascii码 我们需要把properties文件的编码改为UTF-8, 并且选中 Transparent native-to-ascii conversion。 更改完这项配置后, 我们需要重新修改properties文件中的中文乱码部分, 再次运行SpringBoot测试类, 这样读取到的中文就不会乱码了 ... 阅读详情

有3种因素
1、文件的编码格式(是utf8格式和非utf8格式)
2、程序里面转换得到内容的方式(QString::fromLocal8Bit 和 codec->toUnicode)
注明一下 这里 QTextCodec* pcodec = QTextCodec::codecForLocale();
3、不同的字体,假设知道有种字体可以正确显示中文这里举例是Sans Serif字体和 不设置字体

因为我最先考虑的不是字体 所以顺序如下

1.1 不是utf8文件  + QString::fromLocal8Bit  = 方块
1.2 不是utf8文件  + codec->toUnicode = 乱码

2.1 是utf8文件  + QString::fromLocal8Bit  = 方块
2.2 是utf8文件  + codec->toUnicode  = 乱码

上面都没有考虑字体 这时候 热心的网友提醒我注意字体 我就分设置字体和不设置字体

3.1 设置字体 + 不是utf8文件  + QString::fromLocal8Bit = 乱码
3.2 设置字体 + 不是utf8文件  + codec->toUnicode = 乱码
3.3 设置字体 + 是utf8文件  + codec->toUnicode  = 乱码
3.4 设置字体 + 是utf8文件  + QString::fromLocal8Bit  = 终于出来汉字了

设置字体

QFont font;
font.setPointSize(16);
font.setFamily((“Sans Serif”));
sceneryInfo->txtLabel->setFont(font);
//是utf8文件,这个要自己用编辑器转
sceneryInfo->txtLabel->setText(QString::fromLocal8Bit(file.readAll()));

汉字出来了。。。。
不知道我表达清楚了没有呢

QFont font;
font.setPointSize(16);
font.setFamily((“Sans Serif”));
sceneryInfo->txtLabel->setFont(font);
//一定要记得setPointSize一下哦

QFile file(strTxt);

//QTextCodec* pcodec = QTextCodec::codecForName(“GBK”);
//QTextCodec* pcodec = QTextCodec::codecForName(“gb18030″);
//QTextCodec* pcodec = QTextCodec::codecForName(“GB2312″);
//QTextCodec* pcodec = QTextCodec::codecForName(“utf8″);
//QTextCodec* pcodec = QTextCodec::codecForName(“ISO 8859-1″);

QTextCodec* pcodec = QTextCodec::codecForLocale();
if(NULL==pcodec)
{
QMessageBox::information(this,tr(“notice”),tr(“the textcode is error”));
return;
}
else

//QTextCodec* pcodec = QTextCodec::codecForLocale();
if (file.open(IO_ReadOnly))//QFile::ReadOnly | QFile::Text
{
//QTextStream txtmp(&file);
//设置字体
QFont font;
font.setPointSize(16);
font.setFamily((“Sans Serif”));
sceneryInfo->txtLabel->setFont(font);

//QMessageBox::information(this,tr(“notice”),QString::fromLocal8Bit(“你好”));//file.readAll() QString::fromLocal8Bit
//pcodec->toUnicode(“你好”) 乱码
//QString::fromLocal8Bit(“你好”) 方块
//QString::fromUtf8(“你好”) 也是方块

//使用fromLocal8Bit
sceneryInfo->txtLabel->setText(QString::fromLocal8Bit(file.readAll()));

//sceneryInfo->txtLabel->setText(QString::fromUtf8(file.readAll()));
//sceneryInfo->txtLabel->setText(pcodec->toUnicode(file.readAll()));
}
else
printf(“leedebug open error/n”);

LiuR 19:59:03

1. 保存中文的文件需要是 unicode 格式.
2. 使用 QString 来保存读取出来的数据(因为QString内部使用的unicode机制,如果你使用 char 那么需要一次转换).
3. 由于很多字体并不支持 全部unicode编码(或者根本不支持unicode编码).那么 unicode 码的中文字还是不能显示的.所以你需要设置 QFont 的 family 是支持中文unicode码的字库.比如 : 宋体(注意:宋体在非windows系统下的具体名称).

LiuR 20:00:06

以上的方法对其他全角字也支持,比如韩文.

LiuR 20:04:17

@leenux:

1. windows下的文本编辑器以 unicode 码保存文件时,采用的是 utf16 的宽字符形式.(有时候可以在windows下编辑好需要的文本文件)
2. QString 的内部编码也是 utf16.
3. QString直接保存 utf16 编码的信息不需要使用QString::fromLocal8Bit 转换就可以成功显示.

由于以上因素,我建议文件保存成 utf16 的形式.

最新修改
要存为UTF8无BOM型啊

软件设计师考试下午题代码部分详解:23种设计模式全面解析 软件设计师考试的下午题通常会考察设计模式的应用,这部分内容既是重点也是难点。本文将系统地介绍考试中常见的23种设计模式,通过详细代码示例和通俗易懂的讲解,帮助考生掌握这些核心知识点,提高应试能力。概念:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。适用场景:系统要独立于产品的创建、组合和表示时;系统要由多个产品系列中的一个来配置时。@Override@Override@Override@Override// 产品族A@Override。 阅读详情

相关推荐

STC8G1K08A的10位PWM避坑指南:为什么你的占空比调节总失效?(附寄存器操作时序图)

本文深入剖析了STC8G1K08A单片机10位PWM功能中占空比调节失效的核心原因,揭示了数据手册未明确指出的寄存器操作时序陷阱。通过对比错误与正确配置的波形,文章指出关键在于更新占空比高2位前需临时关闭PWM输出,并提供了经过验证的安全操作宏与函数库,帮助开发者彻底解决此问题,实现0%-100%的平滑控制。

yyy34的博客 748

微信小程序文本内容安全检测

微信小程序官方对于那种可以发布内容的小程序,管控得比较严,所以要做类型以发帖、论坛类的小程序都要做内容安全检测。所以想要发布上线就要做内容安全检测。 文本内容安全识别

Cicada的博客 4629

Apollo MPC横纵向耦合控制学习笔记

Apollo MPC横纵向控制原理学习笔记

weixin_39199083的博客 1万+

python中读写文件及中文编码处理方法【整理】

一、 打开文件代码如下:>>> f =open("d:\test.txt", "w") 说明: 第一个参数是文件名称,包括路径; 第二个参数是打开的模式mode : 'r':只读(缺省。如果文件不存在,则抛出错误) 'w':只写(如果文件不存在,则自动创建文件) 'a':附加到文件末尾  'r+':读写如果需要以二进制方式打开文件,需要在mode后面加上字符"b",比如"r

momo的博客 1908

在后端设计中,GDSLL,LEF,DEF,SDF,SPEF,SDC各代表什么意思?前端和中端流程中,SVF,SAIF又代表什么意思?

在后端设计中,GDSLL,LEF,DEF,SDF,SPEF,SDC区别?前端和中端流程中,SVF,SAIF代表什么意思?

weixin_43274923的博客 1万+

费斯托SPAN压力传感器的调试

本体为压力传感器,检测气压大小,通过设置参数,在上电上气时对气压进行判断,进而通过自身逻辑的判断,控制传感器的通断,进而控制机械部位的工作与运行;通电之后为如下图所示的样子有三个按键ABEdit键(编辑键、确认键)两步即可轻松连接。

大小曲奇的博客 1万+

Python学习笔记(12)-文件操作、应用小练习

文件操作 使用文件的目的:把执行代码时产生的数据存储起来,下一次执行代码时直接使用,不必重新在制作一份 文件操作方式:打开文件、读/写文件数据、关闭文件 打开文件 表现形式1:f = open("test.txt","r") 以读的方式打开已存在的名为test.txt的文件,使用变量f指向打开的test.txt文件 注意事项: 1、文件test.txt若不存在代码将报错并退出 2、...

weixin_33937778的博客 612

用友U8其中一个账套提示演示期已到期-修复方法

【事件始末】 一朋友求助,反馈使用的用友U8,很多年了! 突然发现其中账套2021年的一个账套打不开,提示演示期限已到期! 但是其他账套完全正常,可以打开,没有任何问题。 不管是还原老旧备份,还是重装软件问题依旧,无法自己解决。 客户查询报表结算账期,情况比较紧急,于是求助我们。 经过多次反复琢磨和烟酒,终于于晚上23点59分给弄了出来,也总是圆满解决问题了。 【问题分析】 该用户打的是 U82X免狗补丁,估计是该补丁文件设置了 最大有效期,补丁到期了导致的。 也有可能是程序...

u010431289的博客 2万+

中文文件的读取

用fopen_s()函数读取中文文件时会出现乱码。1.在C++中可以使用:_wfopen_s()函数去打开中文文件。函数: _wfopen_s(FILE**fp,L"文件路径",L"文件的使用方式")2.使用:fgetws()函数去读取中文文件。函数:fgetws(wchar_t*wstr,int len,FILE*fp);参数:wchar_t*wstr   // 是自己定义的一块数组      ...

Clever_Pig的博客 2450

BMS硬件设计核心:安全、精度与EMC的工程平衡

电池管理系统(BMS)是保障锂电安全运行的关键嵌入式子系统,其本质是在高精度模拟测量、实时故障响应与复杂电磁环境适应性之间达成工程平衡。原理上,BMS依赖专用监测芯片(如BQ76920)实现微秒级硬件保护,结合主控MCU(如STM32)完成策略决策与通信管理,形成‘安全协处理器+智能主控’双架构。技术价值体现在对过压/欠压/过流/温度等多维故障的毫秒级闭环处置能力,支撑SOC/SOH估算可信度与系统鲁棒性。典型应用场景涵盖电动工具、轻型电动车及储能模块等中低串数电池组。本文聚焦BMS控制板在时钟布局、电源滤

weixin_30591519的博客 70

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1718

python怎么读取中文文件-Python3 中文文件读写方法

字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。在新版本的python3中,取消了unicode类型,代替它的是使用unicode字符的字符串类型(str),字符串类型(str)成为基础类型如下所示,而编码后的变为了字节类型...

q6q6q的专栏 3991

机器人环境仿真软件:Gazebo_(6).传感器仿真

通过 Gazebo 和 ROS,我们可以方便地配置和使用多种传感器,进行机器人环境的仿真和调试。传感器仿真不仅帮助我们验证和测试机器人的感知能力,还可以在真实部署前发现和解决潜在的问题。本节详细介绍了如何在 Gazebo 中配置激光雷达、摄像头、IMU、声纳和 GPS 传感器,并展示了如何在 ROS 中接收和处理这些传感器数据。此外,还介绍了多传感器融合的基本方法和调试工具,希望这些内容能对你的机器人仿真工作有所帮助。

kkchenjj的博客 1389

qt读取中文文件内容的测试

<br />qt读取中文文件内容的测试读取中文文件内容的测试有3种因素 <br /> 1文件的编码格式(是utf8格式和非utf8格式) <br /> 2程序里面转换得到内容的方式 (QString::fromLocal8Bit 和 codec->toUnicode) <br /> 注明一下 这里 QTextCodec* pcodec = QTextCodec::codecForLocale();<br /> 3不同的字体,假设知道有种字体可以正确显示中文这里举例是 Sans Serif字体

yavobo的专栏 2169

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VS2017读取ini 文件中文乱码

【说明】 今天写项目的时候,读取ini文件时候,中文就是乱码了。 测试过,直接输出中文,是没有问题的。 因此问题就确定了是在文件的编码上。 (建议各位也像我这么测试下,不然这个解决方案不一定帮得了你) 【解决方案】 用记事本打开对应的文件。 然后,另存为,发现文件是编码,如果是UTF-8就改为ANSII。反之亦然。 然后新生成的文件尾注可能是*.txt,读取这个另存为的文件就好了~ ...

weixin_44322778的博客 2347

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python文件输出中文_Python之文件读写补充——R+模式下修改中文内容

很高兴在我写的文章下看到有人回复,然后我在测试回复中的代码时居然发现个有趣的现象,并且得出下面的结论,请大家讨论先说结论r+模式(读写)下,如果文件内容已经存在了中文,当你试图插入新内容时,必须使新内容的总体字节数是当前编码下单个汉字占位字节的整数倍。否则读取时会报错。补充:如果你把指针调到末尾则没这个问题,也就是说可以在后面写,但是在前面插入内容的话就会有上面的问题。底层原理说明:为了搞清楚最底...

weixin_39793638的博客 140

jmeter中对于有中文内容的csv文件怎么保存

jmeter的功能很强大,但是细节处没把握好就得不到预期的结果。今天来讲讲有中文内容的csv文件的参数化使用中需要注意的事项。对于有中文内容,涉及到编码格式,为了让jmeter能正确地读取csv文件中的中文,需要把文件转码为UTF-8BOM格式。先新建一个excel表格,上面写上需要用到的各种字段。接着,打开文件->另存为->选择txt文件【选择文本文件】打开另存为的txt文件,遇到有双引号的,把双引号去掉。这样才能保证中文显示正确,不乱码。接下来,再另存为 所有文件,在。

xiaoCCD的博客 780

php调取txt内容生成字符,php fgetc()函数逐个字符的读取文件内容

php fgetc()介绍fgetc — 从文件指针中读取字符,该字符从指向的文件中得到。 碰到 EOF 则返回 FALSE 。语法:string fgetc(resource $handle)从文件句柄中获取一个字符。参数:handle文件指针必须是有效的,必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。php fgetc()实例使用...

weixin_39693295的博客 178

Jmeter读取CSV中文显示乱码问题的解决方法

和往常测试接口一样,编写脚本,将测试数据写入CSV文件,然后执行,结果,Jmeter读取CSV的中文内容,显示为了乱码。 废话不多说,直接上我遇到问题的解决方案。进入CSV文件配置,在文件字符集中,选择UTF-8【默认是空的】。 问题排查思路: 1. 发现字段问题后,显示百度了几个原因,大多数的结果都是字符集出现了问题,然后就想着改CSV文件字符集 2. 更改的...

Bierante的博客 6277

linux libxls xls_open 中文,Linux/Mingw Excel (*.xls)文件读取,使用libxls库

做个项目需要读取xls文件,通过搜索,找到三个库,BasicExcel、libxl、libxls。因为BasicExcel不支持中文,而且06年就没更新了,果断放弃。libxl感觉是这三个库中最好的,能读能写,对格式支持也最好,但是考虑到项目只需要读取,而且这是商业软件,授权也不便宜,也放弃了。首先下载libxls,项目地址:http://sourceforge.net/projects/libx...

weixin_39817122的博客 1080

python09_IO/文件处理

python之文件处理

测试媛自动化测试的成长之路 922

中文乱码处理: InputStreamReader / OutputStreamWriter

import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; /** * 测试类, 中文乱码处理: InputStreamReader / Output.

yiXin_Chen的博客 542

揭秘OpenCV无法读取中文路径的根源:3种高效解决方案详解

轻松解决OpenCV无法读取中文路径难题,详解3种实用的OpenCV读取中文路径图片方法,适用于Windows系统下图像处理场景,支持直接读取含中文的文件路径,兼容性强且无需修改源码,操作简单高效,值得收藏。

GatherLume的博客 1512

java properties文件 变量_java读取properties文件将参数值配置到静态变量

将test.properties的文件读取赋值给静态变量创建一个final类可以两种方式读取test.properties配置文件第一种:此方法可以写配置文件的绝对路径InputStream is = new BufferedInputStream(new FileInputStream(new File("F:\\java\\idea-workspace\\javaDemoForTest\\sr...

weixin_33728077的博客 750

【C语言文件读写实践(三)】

C语言文件读写实践(三),读写中文字符,输出为JSON格式。

gwsong52的博客 747

java 中文字符 替换_java实现替换文本中的乱码字符

创建文件加载与操作转换类Trasfer.javaimport java.io.IOException;import java.nio.file.Files;import java.nio.file.Paths;import java.util.HashMap;import java.util.Map;public class Trasfer {/*** 记录替换的记录*/private stati...

weixin_34332352的博客 858
上一篇: 关于QT中显示中文的一些研究
下一篇: 谈谈Qt的中文编码~
ryanzz
博客等级 码龄19年 7粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值