Qt中解决中文乱码的方法----编码

qt 汉字输出 中文输出 显示乱码 qDebug() 乱码 解决 qt汉字输出中文输出显示乱码qDebug乱码解决 阅读详情

如只是提供给本地用户使用,无需国际化

先调用下面两个函数之一

QTextCodec *textc=QTextCodec::codecForName(”gbk”);

QTextCodec *textc=QTextCodec::codecForName(”utf8″);

然后调用下面3个函数之一

QTextCodec::setCodecForCStrings(textc);

QTextCodec::setCodecForTr(textc);

QTextCodec::setCodecForLocale(textc);

至于调用哪一个是不知道的,只好挨着试,反正组合也不多。问题是解决了。但下次还是这么试。

下面我们来看看这几个函数都作用在什么地方。

1. setCodecForCStrings(textc)

这个函数主要用在用字符常量或者QByteArray构造QString对象时使用的默认编码方式。比如下面一个例子

23 int main(int argc,char *argv[]){

24     QApplication app(argc,argv);

25

26     QTextCodec *tc=QTextCodec::codecForName(”utf8″);

27     QTextCodec::setCodecForCStrings(tc);

28     QString str(”宁愿看见两个恶魔在拔河,也不愿看见一只天使在跳舞。”);

29     QPushButton ww(str);

30     ww.show();

31

32     app.exec();

33 }

如果把26,27行的地方注释掉,那么我们在QPushButton上看到的将是一堆乱码。因为在默认情况下QString把构造函数的字符串参数当成标准拉丁字符,很显然是会出现乱码的。如果是在Linux下的话你在编辑器里输入的时候,默认文本格式是”utf8″,如果你是在windows下做开发那么26行的地方很可能要改成”gbk”了。

2.  setCodecForTr(textc)

这个函数的作用是设置传给tr函数时的默认字串编码

23 int main(int argc,char *argv[]){

24     QApplication app(argc,argv);

25

26     QTextCodec *tc=QTextCodec::codecForName(”utf8″);

27     QTextCodec::setCodecForCStrings(tc);

28     QString str(QObject::tr(”宁愿看见两个恶魔在拔河,也不愿看见一只天使在跳舞。”));

29     QPushButton ww(str);

30     ww.show();

31

32     app.exec();

33 }

同样一个例子,我在28行的地方加了tr之后,运行的结果又不能正常显示中文了。需要将27行的函数改成setCodecForTr就可以了。

3. QTextCodec::setCodecForLocale(textc)

这个函数主要用于设置和对本地文件系统读写时候的默认编码格式。比如通过流读取一个文件时内容时的编码格式。或者通过qDebug()输出打印信息时的编码。

7 int main(int argc,char *argv[]){

8     QTextCodec *tc=QTextCodec::codecForName(”utf8″);

9     QTextCodec::setCodecForCStrings(tc);

10     QString str(”宁愿看见两个恶魔在拔河,也不愿看见一只天使在跳舞。”);

11

12     QTextCodec *tl=QTextCodec::codecForName(”utf8″);

13     QTextCodec::setCodecForLocale(tl);

14     qDebug()<<str;

15 }

你也可以试试把第12行去掉或者编码改成”gbk”,就会大概明白setCodecForLocale的作用了。

 

--------------------------------------------------------------------------------------------------------------------

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));

从UTF8编码到GB编码的字符串转换方法:
QString Utf8_To_GB(QString strText)
{
    return QString::fromUtf8(strText.toLocal8Bit().data());
}

至于从GB到UTF8,那大家就经常用了:
QString GB_To_Utf8(char *strText)
{
    return QString::fromLocal8Bit(strText);
}

qt msvc17 中文乱码 参考blog: http://blog.youkuaiyun.com/libaineu2004/article/details/19245205 http://blog.youkuaiyun.com/brave_heart_lxl/article/details/7186631 http://blog.youkuaiyun.com/imxiangzi/article/details/50781459 写qt程序时,源码中 阅读详情

相关推荐

QODBC查询Oracle中文乱码问题

解决QODBC操作oracle中文字段乱码的问题

小米的修行之路 1491

QT qDebug()输出中文乱码解决方法

【win10系统】QT6项目调试使用qDebug时,控制台输出的中文一直是乱码,网上搜索了很多乱码解决办法,都没有起到作用。

yanghongfei110的博客 5033

QT6 C++ qDebug()输出中文乱码解决方法

QT6 C++ qDebug()输出中文乱码解决方法

星如雨落 3379

Qt 之 qDebug()打印和QString中文乱码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码

一个老菜鸟的学习分享 2万+

vivado 编译ADI AD9361 TCL脚本生成hdl工程

(4)输入"source ../../scripts/adi_make.tcl"命令(仅双引号内部命令,不包含双引号),个人理解:该命令用来加载当前所需要编译工程所需要各功能模块的信息,因为每个工程需要不同的功能模块,比如有的需要gpio模块,有的不需要gpio模块,这些模块上前面路径的library也同样以TCL脚本形式存在,当有需要时才进行编译,怎么知道当前工程需要什么模块呢就是通过"source ../../scripts/adi_make.tcl"(仅双引号内部命令,不包含双引号)命令实现。

weixin_40586423的博客 808

kaggle——销量预测的baseline(M5 Forecasting - Accuracy)

前言 在刚刚结束的kaggle比赛M5 Forecasting - Accuracy中,因为是第一次参加,笔者也是花了大量的时间和精力在上面,最终拿到一块银牌(所以我拿到了大学第一个考试挂科。。。求求电磁场老师高抬贵手给点平时分放我一马吧。。。早上看到kaggle成绩异常兴奋,中午考完直接爆炸=。=),当然运气占了很大因素,这次比赛private leadboard的shake up非常大,排名波动几千名都存在的。笔者运气不错,是向上的shake:)。这里总结一下销量预测的基本流程。 从下图可以看到这次比

weixin_43901221的博客 5433

qt creator修改程序编码(解决中文乱码问题)的方法

qt creator修改程序编码(解决中文乱码问题)的方法 qt creator修改程序编码的功能有几处。 1.edit - select encoding 选择载入(显示)编码和储存编码,其中GB2312和UTF-8是常用编码方式。 这种方法主要是修改已经建立的程序文件。 2.tools - options - text editor - behavior -

分享的滋味 6万+

tree_sitter多语言解析器配置实战指南

本文是一份详细的Tree-sitter多语言解析器配置实战指南。文章从零开始,手把手指导如何搭建Python环境、安装指定版本的tree-sitter库、下载并编译多种语言的语法规则,最终构建一个统一的解析器库。通过实战代码演示了如何初始化解析器、解析代码并遍历语法树,旨在帮助开发者高效处理多语言代码分析任务,并分享了高级技巧与常见问题排坑经验。

weixin_29245767的博客 267

create显示中文乱码 qt_qt creator修改程序编码(解决中文乱码问题)的方法

qt creator修改程序编码(解决中文乱码问题)的方法qt creator修改程序编码的功能有几处。1.edit - select encoding选择载入(显示)编码和储存编码,其中GB2312和UTF-8是常用编码方式。这种方法主要是修改已经建立的程序文件。2.tools - options - text editor - behavior - file encodings这主要针对新建的...

weixin_39576066的博客 340

PINN内嵌物理知识神经网络入门及文献总结

内嵌物理知识深度学习方法(PINN)已经成功用于解决各类科学计算问题,其本质是将物理先验知识嵌入神经网络训练中,将一个求解PDE的问题转化为一个优化问题。这篇博客主要记录PINN相关论文

山里娃的博客 7万+

DPM|03Injection设置

摘要:本文介绍了CFD软件Fluent中粒子注入的设置方法。粒子注入是将离散颗粒引入连续相的过程,可用于模拟灰尘、燃料液滴等。设置流程包括:选择粒子类型(质量less、惰性等)、定义注入点属性(坐标、时间、粒径等)、处理多组分粒子、使用文本文件批量定义复杂注入。文中还详细说明了要考虑的湍流影响,包括随机追踪法模拟湍流扩散,以及粒子旋转建模等注意事项。最后介绍了多种注入类型和粒子类型,并强调在湍流系统中需设置足够的尝试次数以确保结果准确性。

qq_28258217的博客 2229

QT学习——qt creator修改程序编码(解决中文乱码问题)的方法

qt creator修改程序编码的功能有以下几处: (1)edit - select encoding(编辑--选择编码): :       选择载入(显示)编码和储存编码,其中GB2312和UTF-8是常用编码方式。       这种方法主要是修改已经建立的程序文件。 (2)tools - options - text editor - behavior -

perfect-顾(coder)的博客 3386

SAP 联产品测试

最近领导一直要求研究一下SAP联产品的使用场景,之前只是自己摸索过一次,这个重新对联产品进行一个测试。 1、首先准备好物料主数据 注意主数据中需要勾选联产品标识。 设置好物料的分摊的百分比。 2、检查BOM 在BOM中也需要维护联产品的标识 只有当组件数量未负数时,才能勾选联产品的标识。如果组件数量正值,勾选联产品的标识时会报错。 3、我们创建生产订单 可以看到按正常的生产订单下达时,系统就报错了,问题点在于离散制造的生产订单基本是结算到物料的。但是联产品是按订单结算的, 所以需要对订单类型中的结算参

我小时候很黑的博客 2110

【QT】应用程序输出中文乱码解决方法

Qt中文乱码解决方法

技术流浪汉的博客 1万+

YOLO项目从零开始:超详细运行教程(图文保姆级教学)

至此,我们已经完整跑通了YOLO项目的安装与启动流程,无论你是零基础小白还是刚入门的AI新兵,只要按部就班操作,也能轻松实现目标检测项目的落地。

一键难忘的博客 4800

Golang内存管理:GC调优实战案例

在Golang编程中,内存管理是一个非常重要的方面。良好的内存管理可以提高程序的性能和稳定性,而GC(垃圾回收)调优则是优化内存管理的关键手段。本文的目的就是通过实际案例,深入讲解Golang中GC调优的方法和技巧,让读者能够在实际项目中更好地进行内存管理和性能优化。范围涵盖了从核心概念的解释到具体代码实现和调优过程的详细分析。本文首先会介绍一些相关的术语和核心概念,让读者对Golang内存管理和GC有一个基本的认识。然后通过故事引入的方式,更加形象地解释核心概念及其相互关系。

AI Agent Harness Engineering 1118

Qt学习之路之解决中文乱码

笔者是这样在QT5下解决中乱码的。 1.在需要使用的中文的.cpp文件中, 现在对应的.h文件中添加 头文件: QTextCodec, 2.在 .cpp需要使用中文的函数中添加下面的代码: QTextCodec *codec = QTextCodec::codecForName("GB18030"); 3.接下来就调用 变量 codec的函数 toUnicode()写入中文。

知其所以然 3247

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Qt5 中文乱码解决方法剖析

Qt5 废除了Qt4的一些函数,把中文处理变得简单了,但Qt4已经发展了好久了,网上相对的解决方法相对较多,剖析也较多,但Qt5的却不多。 本人也是刚学Qt,在处理数据库时却被它搞的焦头烂额,无奈只能抽出半天时间研究它。 本人开发环境为Qtcreator + Mingw + windows 7中文旗舰版 现贴出代码和.pro再做解释 #include #include #inc

li_jian_xing的专栏 9554

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

qt编码问题出现中文乱码或者报常量中有换行符错误的解决方法。

GBK编码但是输出中文的时候出现乱码,这个时候要的的QString :: fromLocal8Bit(“中文”);如果还是不行你可以先用记事本打开源码然后选择另外为,编码为UTF-8,替换原来的文件,再用的QString :: fromLocal8Bit(“”)。一般就可以了...

weixin_39770778的博客 642

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

qt中文乱码问题

以下是dbzhang关于qt中文乱码问题原因的阐述,觉得不错:   首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。 很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四个汉字采用的那种编码。而问题

在水一方 13万+

Qt中文乱码问题

Qt中文乱码问题 1. 在main添加如下代码: QTextCodec *codec= QTextCodec::codecForName("GBK");//GB2312也可以 QTextCodec::setCodecForCStrings(codec);// 1 QTextCodec::setCodecForLocale(codec);// 2 QTextCode...

《好好先生》专栏 652
上一篇: 《从一个实例看编程水平的步步提高》
下一篇: QT中实现上下文菜单
ryanzz
博客等级 码龄19年 7粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值