qt是跨平台的开发平台。他的编译器是要手动配置的,在window下一般我们用virtual stuido中cl,或者Mingw中的g++

在linux中一般采用Linux下的g++

而  微软VS的中的cl,Mingw中的g++,Linux下的g++),源代码分别采用 GBK 和 不带BOM的UTF-8  以及 带BOM的UTF-8 这3中编码进行保存。

也就是说编译器的编码方式是不同的,所以大部分情况我们在qt代码中写中文时就会有乱码

网上搜索得出  

这两段代码可以解决大部分的乱码问题。(记得加入#include<QTextCodec> 头文件引用

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

其实上面的代码的意思是告诉编译器我们用什么样的编码方式来解读我们写的代码。 一般在使用微软的编译器 我们在main函数中

QApplicationa(argc,argv);之后加入QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));

使用g++编译器我们使用QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

第2种方法

Qt5中,一些函数已经被取消了,而且网上很多都是不推荐这种写法。所以当时找到的是自行转换:

    QTextCodec * BianMa = QTextCodec::codecForName ( "GBK" );
    QMessageBox::information(this, "提示", BianMa->toUnicode("中文显示!"));

其实也可以通过QString定义的静态函数,先转换成Unicode类型:

QString::fromLocal8Bit("提示")

不过在Qt5中,提供了一个专门的处理宏,来支持中文常量,那就是QStringLiteral,但它只能处理常量。

QMessageBox::information(this, QString::fromLocal8Bit("提示"), QStringLiteral("中文显示"));

    const char* info = "中文显示";
    //不支持
    QString strInfo = QStringLiteral(info);
    //支持
    QString strInfo = QString::fromLocal8Bit(info);

对于中文常量,使用QStringLiteral即可解决,对于字符串变量,使用QString自带函数也可以轻松解决。

qt中 中文乱码问题的更多相关文章

  1. 编码(ACSII unicod UTF-8)、QT输出中文乱码深入分析

    总结: 1. qt输出中文乱码原因分析 qt的编程环境默认是utf-8编码格式(关于编码见下文知识要点一): cout << "中文" << endl; 程 ...

  2. mysql中中文乱码问题

    作用:约束用来保证数据有效性和完整性 . 定义主键约束 主键约束 primary key : 信息记录某个字段可以唯一区分其他信息记录,这个字段就可以是主键 (唯一 非空)   primary key ...

  3. Qt中中文字符 一劳永逸的解决方法

    QT中中文字符问题,有没有一劳永逸的解决方法? 目前遇到有以下问题 1.字符串中有中文时,编译提示"常量中含有换行符" 2.在控制台窗口输出中文时无法正常显示,中文全部显示为? 目 ...

  4. Qt Creator 中文乱码问题

    一. Qt 4 乱码问题 解决方案 1. 在Qt 中 快捷菜单选项功能中 Edit(编辑)  --> Select Encoding...(选择编码) 选择载入(显示)编码和储存编码,要解决中文 ...

  5. java开发中中文乱码总结

    1.jsp页面内容显示乱码 这种乱码原因很简单,一般的工具或解码程序对中文字符解析时采用默认的解码方式: <%@ page contentType="text/html; charse ...

  6. Qt控制台中文乱码问题

    本文主要记录了Qt控制台出现中文乱码的问题,一下列出了集中编码设置的方法.以前用VC6.0写的一个贪吃蛇的游戏,今天把源文件拿出来在Qt上面运行,出现中文乱码的问题.以前也遇到过,没想到小小的乱码,折 ...

  7. servlet中中文乱码问题

    在web项目中经常回碰到中文乱码的问题,特此整理一下,有不足的地方,希望大家纠正. 1从前台往后台传数据,.以get方式发送请求,发送的参数不乱,但是后台接收到参数乱码 在Tomcat的server. ...

  8. 关于web项目中中文乱码问题的总结

    关于post和get的中文乱码处理 get: (1)转码:String username=request.getParameter("username");       Strin ...

  9. 201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。

    这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的 ...

随机推荐

  1. MISRA-C 2012 C90规范和C99规范对比

  2. Starting MySQL.. ERROR! The server quit without updating PID file (/gechong/mysqldata/10-9-23-119.pid).

    配置文件修改错误了,还原一下重启服务就OK了. # /etc/init.d/mysql start

  3. 修改ligerui 默认确认按钮

    $.extend($.ligerDefaults.DialogString, {ok: '取消单据'}); showDialogPay = $.ligerDialog.alert('正在支付中,请稍候 ...

  4. Linux不用使用软件把纯文本文档转换成PDF文件的方法

    当你有一大堆文本文件要维护的时候,把它们转换成PDF文档会好一些.比如,PDF更适合打印,因为PDF文档有预定义布局.除此之外,还可以减少文档被意外修改的风险. 要将文本文件转换成PDF格式,你要按照 ...

  5. CMake 基本用法--写CMakeList.txt

    http://techbase.kde.org/Development/Tutorials/CMake_(zh_CN) http://www.cmake.org/Wiki/CMake 这一章将从软件开 ...

  6. 身份证查询API

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #http://apistore.baidu.com/apiworks/servicedetail/113.h ...

  7. 在交叉编译中使用最新版的SS

    因为旧版本的ss-local总是出现 shake hands failed 错误, 打算用最新的版本试试, 所以尝试在编译中使用最新版的shadowsocks. 项目地址 Shadowsocks-li ...

  8. PHP-中文在计算机中的存储

    经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. ● 为什么有这么多编码? ...

  9. JavaScript中逗号运算符

    JavaScript中逗号运算符(,)是顺序执行两个表达式.使用方法: expression1, expression2 其中expression1是任何表达式. expression2是任何表达式. ...

  10. Eclipse智能提示设置

    最近公司电脑上的Eclipse没有了自动提示功能,也不是全部不提示,大多数情况下按下“alt+/”键还会产生提示,但是当我在java项目中邪main方法和syso的时候,“alt+/”则会失效,今天在 ...