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. [Real World Haskell翻译]第24章 并发和多核编程 第一部分并发编程

    第24章 并发和多核编程 第一部分并发编程 当我们写这本书的时候,CPU架构正在以比过去几十年间更快的速度变化. 并发和并行的定义 并发程序需要同时执行多个不相关任务.考虑游戏服务器的例子:它通常是由 ...

  2. IOI 2017 Practice Contest mountains

    Mountains 题面 题意: 选最多的点使得两两看不见. 分析: 分治,solve(l,r)为区间[l,r]的答案.那么如果不选最高点,分治两边即可,选了最高点,那么在最高点看不见的区间里分治. ...

  3. C#防止程序重新运行

    //禁止重复运行 bool ret; Mutex mutex = new Mutex(true, Application.ProductName, out ret); if (ret) { Appli ...

  4. jQuery个人总结

    选择 1. end()的使用 $('div') .find('h3') .eq(2) .html('Hello') .end() //退回到选中所有的h3元素的那一步 .eq(0) //选中第一个h3 ...

  5. 说说NSCache优于NSDictionary的几点

    1.NSCache可以提供自动删减缓存功能,而且保证线程安全,与字典不同,不会拷贝键.2.NSCache可以设置缓存上限,限制对象个数和总缓存开销.定义了删除缓存对象的时机.这个机制只对NSCache ...

  6. 一种精准monkey测试的方法

    WeTest 导读 相信大家都知道移动端应用的monkey测试吧,不知你们有没有为monkey测试的太过于随机性的特性有过困扰,至少在我们这种界面控件较少且控件位置较偏的app的使用上其测试有效性大打 ...

  7. React中类定义组件constructor 和super

    刚开始学习React没多久,在老师的教程里看到了类组件的使用示例,但是和资料上有些冲突,而引发了一些疑问: 类组件中到底要不要定义构造函数constructor()? super()里边到底要不要传入 ...

  8. 「日常训练&知识学习」树的分块(王室联邦,HYSBZ-1086)

    题意与分析 这题的题意就是树分块,更具体的看题目(中文题). 学习这一题是为了树的分块,为树上莫队做铺垫. 参考1:https://blog.csdn.net/LJH_KOQI/article/det ...

  9. 汽车后市场:数据入口在哪里?不看你就OUT啦!

    当前中国汽车后服务市场基本可分七个大类:包括养护.维修.改装.二手车.汽车配件.相关电商及金融保险等,汽车后市场整个产业链对数据服务都有刚性需求. 数据能为行业服务提高效率,提升商家对于客户以及业务的 ...

  10. 180626-Spring之借助Redis设计一个简单访问计数器

    文章链接:https://liuyueyi.github.io/hexblog/2018/06/26/180626-Spring之借助Redis设计一个简单访问计数器/ Spring之借助Redis设 ...