1.Qt Creator -> 工具 -> 选项 -> 环境 - >概要 -> 语言
   Qt Creator本身界面的语言选择,与cpp文件编码无关,与可执行文件显示编码无关
   重新打Qt Creator 此设置才能生效,这个唯一选择<Chinese>

2.Qt
Creator ->
工具 -> 选项 -> 文本编辑器 -> 默认文件编码

决定cpp文件编码,不同平台下此设置要相同。如果不同,cpp文件会有好多乱码,且不能被编辑,但不影响编译。重新打Qt
Creator 此设置才能生效,这个推荐选<UFT-8>,因为linux下是这个。如果打开的文件不是UFT-8:Qt Creator -> 编辑 -> 选择编码,选择<根据编码重新载入>这步选择文件的原始编码,再<根据编码保存>这步选择需要保存的目标编码

3.QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
只与这个相关QString str = tr("中文")。注意,相关的是转换过程,QString本身是unicode,不会影响到QString,这个必须和Qt Creator -> 工具 -> 选项 -> 文本编辑器 -> 默认文件编码相同。推荐选<UFT-8>

4.QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
只与这个相关QString str = QString("中文")。注意,相关的是转换过程,QString本身是unicode,不会影响到QString,这个必须和Qt Creator -> 工具 -> 选项 -> 文本编辑器 -> 默认文件编码相同。推荐选<UFT-8>

5.QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
只与这个相关QString str =
QString::fromLocal8Bit("中文")。
以上2个最好都不用,用以下的

// 常规做法举例之GB2312  ,注意"UTF-16"的输入是要带BOM的 
QTextCodec *pCodec = QTextCodec::codecForName("GB2312");//
"UTF-8", "UTF-16"
GB2312转QString: pCodec->toUnicode();
QString转GB2312: pCodec->fromUnicode();

// 另外QString类分别针对"UTF-8", "UTF-16"做了专门的函数, 当然结果同常规做法是一样的,例子如下:

// Unicode(utf8)(3个字节/汉字, 1个字节/字母)

UTF-8转QString: QString::fromUtf8();

QString转UTF-8: QString.toUtf8();

// Unicode(utf16) Unicode(ucs2) Unicode(iso-10646-ucs-2)  2个字节/字符,也是windows记事本里那个Unicode
// qt中表示UTF-16要用ushot,不要用wchar_t(wchar_t大小根据编译器而定)
UTF-16转QString: QString::fromUtf16(); //这个带2个字节的BOM头,[0xFF 0xFE](61,00) 或者[0xFE
0xFF](00,61)
QString转UTF-16: QString.utf16();         //返回以0结尾的ushot数组。

6.UI界面控件中可直接写对应中文内容,而不需要另外的转换

因为QString本身是unicode,保存到<ui_***.h>文件文件时是这样写的:
label->setText(QApplication::translate("Dialog",
"\346\210\221\344\273\254", 0, QApplication::UnicodeUTF8));或
label->setText(QString::fromUtf8("\346\210\221\344\273\254"));


7.文本文件的编码

windows平台文本文件有BOM
        ANSI:没有文件头,2字节/汉字,1字节/英文
        UTF-8:文件头[0xEF,0xBB,0xBF],3字节/汉字,1字节/英文
        Unicode:文件头[0xFF,0xFE],2字节/汉字,2字节/英文
        Unicode big endian :文件头[0xFE,0xFF],同Unicode,字节序相反

Linux平台UTF-8和GB2312文件都没有BOM
Linux平台UTF-16同windows一样,有BOM且相同

8.Qt支持的文本编码
("GBK", "CP936", "MS936", "windows-936",
"roman8", "hp-roman8", "csHPRoman8",
"TIS-620", "ISO 8859-11","WINSAMI2",
"WS2", "Apple Roman", "macintosh",
"MacRoman", "windows-1258", "CP1258",
"windows-1257","CP1257", "windows-1256",
"CP1256", "windows-1255", "CP1255",
"windows-1254", "CP1254",
"windows-1253","CP1253", "windows-1252",
"CP1252", "windows-1251", "CP1251",
"windows-1250", "CP1250", "IBM866",
"CP866","csIBM866", "IBM874", "CP874",
"IBM850", "CP850", "csPC850Multilingual",
"ISO-8859-16", "iso-ir-226",
"latin10","ISO-8859-14", "iso-ir-199",
"latin8", "iso-celtic", "ISO-8859-13",
"ISO-8859-10", "iso-ir-157", "latin6",
"ISO-8859-10:1992", "csISOLatin6", "ISO-8859-9",
"iso-ir-148", "latin5", "csISOLatin5",
"ISO-8859-8", "ISO 8859-8-I", "iso-ir-138",
"hebrew", "csISOLatinHebrew", "ISO-8859-7",
"ECMA-118", "greek", "iso-ir-126",
"csISOLatinGreek", "ISO-8859-6", "ISO-8859-6-I",
"ECMA-114", "ASMO-708", "arabic",
"iso-ir-127", "csISOLatinArabic",
"ISO-8859-5","cyrillic", "iso-ir-144",
"csISOLatinCyrillic", "ISO-8859-4", "latin4",
"iso-ir-110", "csISOLatin4", "ISO-8859-3",
"latin3","iso-ir-109", "csISOLatin3",
"ISO-8859-2", "latin2", "iso-ir-101",
"csISOLatin2", "KOI8-U", "KOI8-RU",
"KOI8-R", "csKOI8R", "UTF-8",
"ISO-8859-1", "latin1", "CP819",
"IBM819", "iso-ir-100", "csISOLatin1",
"ISO-8859-15", "latin9","UTF-32LE",
"UTF-32BE", "UTF-32", "UTF-16LE",
"UTF-16BE", "UTF-16", "System",
"Iscii-Mlm", "Iscii-Knd", "Iscii-Tlg", "Iscii-Tml",
"Iscii-Ori", "Iscii-Gjr", "Iscii-Pnj",
"Iscii-Bng", "Iscii-Dev", "TSCII",
"GB18030", "GB2312", "EUC-JP","ISO-2022-JP",
"Shift_JIS", "JIS7", "SJIS",
"MS_Kanji", "EUC-KR", "cp949", "Big5",
"Big5-HKSCS", "Big5-ETen","CP950")

Qt编码设置的更多相关文章

  1. FMS直播流发布时 Microphone Speex 编码设置注意事项

    1.为何要用 Speex?FP的默认音频编码是 NellyMoser,而FP10之后加入了 Speex.实际应用中,用默认的 NellyMoser 编码音频,会有个很大的问题,就是无法控制流码率浮动. ...

  2. MySQL基础 - 编码设置

    刚开始工作的时候,在工作中遇到的与数据库相关的问题,多半跟编码有关,总结一下数据库编码的设置. 字符集 查看数据库支持的字符集: mysql> SHOW CHARACTER SET; 从图中可以 ...

  3. Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)

    Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口.下面分别叙述用这两种方式来实现窗口边框圆角的效果. 一.使用setStyleSheet方法 this- ...

  4. eclipse运行时编码设置

    eclipse运行时编码设置:

  5. qt widget设置Qt::FramelessWindowHint和Qt::WA_TranslucentBackground, 会出现一个bug: 在最小化后还原时界面停止刷新

    qt widget设置Qt::FramelessWindowHint和Qt::WA_TranslucentBackground, 会出现一个bug: 在最小化后还原时界面停止刷新 Widget wit ...

  6. QT 常用设置

    博文都写在了云笔记里面了,见谅,不想维护两个版本. QT 常用设置

  7. UrlConnection doPost Https请求 、编码设置

    UrlConnection doPost Https请求 .编码设置 UrlConnection doPost方法 /** * 发送POST请求 * * @param url 请求地址url * @p ...

  8. Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())

    在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等. 但是各种方法都有其注意事项,如果不注意则很容易 ...

  9. iconv内容,convmv文件名,unix2dos,dos2unix文件格式转换,od/cut/wc/dd/diff/uniq/nice/du等命令,linux文件名乱码,文件名,文件内容,vim编码设置

    1.enconv文件名编码转换,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下 enconv -L zh_CN -x UTF-8 filename enconv -L GB2312 -x  ...

随机推荐

  1. 武汉Uber优步司机奖励政策

    ·武汉奖励前提 *必须满足当周平均评分4.7星及以上,且当周接单率70%及以上,才有资格获得奖励 *刷单和红线行为立即封号并取消当周全部奖励及车费! *从4月20日起,所有ETC和机场高速费用不参与奖 ...

  2. SQLite FTS3/FTS4与一些使用心得

    此文已由作者王攀授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 简介 对于今天的移动.桌面客户端应用而言,离线全文检索的需求已经十分强烈,我们日常使用的邮件客户端.云音乐.云 ...

  3. vs找不到lib以及编译的link过程中出现的问题

    1.#pragma comment 程序中已经通过该语句完成lib库的引入,如果再在input里面添加lib库就会报错: 2.要在general的“导入外部库”的设置选项的目录下面添加引用到的lib库 ...

  4. 对网页进行截图(selenium)

    import os def insert_img(driver,file_name): #获取当前路径,并转换为字符串 base_dir=str(os.path.dirname(__file__)) ...

  5. centos7下搭建django

    安装环境:centos7.4 1 安装nginx yum install nginx 注:尝试过在本地和腾讯云上安装,使用同一条命令:在本地安装提示没有可用安装包,云上安装正常 启动nginx,并启用 ...

  6. 软件测试的基础-摘自《selenium实践-基于电子商务平台》

    软件测试的方法 一.等价类划分法 等价类划分法是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少量具有代表性的数据作为测试用例. 有两种不同的情况:有效等价和无效等 ...

  7. android AVD创建

    参数详解:AVD name:是要填写的虚拟机名称,这个自己随便取名就行了,要纯英文和数字组成Device:这里是要选择模拟的设备,一般选择3.2*QVGA(ADP2)(320*480: mdpi)这个 ...

  8. Linux服务架设篇--arp命令

    ARP,地址解析协议.在以太局域网中,主机之间交换数据帧时,是通过MAC地址进行的.因此,当以太网的一台主机向另一台IP地址的主机发送数据包时,它需要知道目的IP地址所对应的MAC地址,才能把这个IP ...

  9. CDH/Hadoop 5.15 installation steps

    I will talk the main steps to install CDH 5.15 on Linux(CENT OS 6.10).  The installation method is M ...

  10. Too many open files错误与解决方法

    致前辈:该问题的解决思路给了我很大的启发,文章作者Lis, Linux资深技术专家. 问题现象:这是一个基于Java的web应用系统,在后台添加数据时提示无法添加,于是登陆服务器查看Tomcat 日志 ...