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. jquery table 发送两次请求 解惑

    版本1.10 以下链接为一个较低版本解决方案: http://blog.csdn.net/anmo/article/details/17083125 而我的情况有点作, 情况描述: 1,一个页面两个t ...

  2. Solr第一讲——概述与入门

    一.solr介绍 1.什么是solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr可以独立运行在Jetty.Tomcat等这些Serv ...

  3. 北京Uber优步司机奖励政策(11月30日~12月4日)

    用户组:人民优步(适用于12月1日)奖励政策: 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:htt ...

  4. day 5 模块发布安装

    1.模块的位置 现在当前路径查找,再到系统路径/usr/lib/python3.5/查找,再到其他系统路径查找 2.模块发布 1)模块目录结构 Msg ├── __init__.py ├── recv ...

  5. nio之netty3的应用

    1.netty3是nio的封装版本.在使用上面比nio的直接使用更好.nio简单使用都是单线程的方式(比如:一个服务员服务很多客户),但是netty3的方式不一样的是,引入线程池的方式来实现服务的通信 ...

  6. MySQL高级-慢查询日志

    一.慢查询日志是什么 1. 2. 3. 2.开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢? 3.案例 1.查看当前多少秒算慢 2.设置慢的阙值时间 3.为什么设置后看不出变化? 4.记 ...

  7. hdu1789 Doing Homework again(贪心+排序)

    Doing Homework again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  8. 应用UserDefaults储存游戏分数和最高分

    应用UserDefaults储存游戏分数和最高分 我们在GameScene.swift里 private var currentScore:SKLabelNode! // 当前分数节点 private ...

  9. SQL学习(时间,存储过程,触发器)

    SQL学习 几个操作时间的函数 --datapart 获取时间中的年月日时分秒等部分 select DATEPART(year,current_timestamp); select DATEPART( ...

  10. 腾讯地图和百度地图的PHP相互转换

    /** * 百度地图---->腾讯地图 * @param double $lat 纬度 * @param double $lng 经度 * @return array(); */ functio ...