Qt编码设置
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编码设置的更多相关文章
- FMS直播流发布时 Microphone Speex 编码设置注意事项
1.为何要用 Speex?FP的默认音频编码是 NellyMoser,而FP10之后加入了 Speex.实际应用中,用默认的 NellyMoser 编码音频,会有个很大的问题,就是无法控制流码率浮动. ...
- MySQL基础 - 编码设置
刚开始工作的时候,在工作中遇到的与数据库相关的问题,多半跟编码有关,总结一下数据库编码的设置. 字符集 查看数据库支持的字符集: mysql> SHOW CHARACTER SET; 从图中可以 ...
- Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)
Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口.下面分别叙述用这两种方式来实现窗口边框圆角的效果. 一.使用setStyleSheet方法 this- ...
- eclipse运行时编码设置
eclipse运行时编码设置:
- qt widget设置Qt::FramelessWindowHint和Qt::WA_TranslucentBackground, 会出现一个bug: 在最小化后还原时界面停止刷新
qt widget设置Qt::FramelessWindowHint和Qt::WA_TranslucentBackground, 会出现一个bug: 在最小化后还原时界面停止刷新 Widget wit ...
- QT 常用设置
博文都写在了云笔记里面了,见谅,不想维护两个版本. QT 常用设置
- UrlConnection doPost Https请求 、编码设置
UrlConnection doPost Https请求 .编码设置 UrlConnection doPost方法 /** * 发送POST请求 * * @param url 请求地址url * @p ...
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等. 但是各种方法都有其注意事项,如果不注意则很容易 ...
- 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 ...
随机推荐
- jquery table 发送两次请求 解惑
版本1.10 以下链接为一个较低版本解决方案: http://blog.csdn.net/anmo/article/details/17083125 而我的情况有点作, 情况描述: 1,一个页面两个t ...
- Solr第一讲——概述与入门
一.solr介绍 1.什么是solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr可以独立运行在Jetty.Tomcat等这些Serv ...
- 北京Uber优步司机奖励政策(11月30日~12月4日)
用户组:人民优步(适用于12月1日)奖励政策: 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:htt ...
- day 5 模块发布安装
1.模块的位置 现在当前路径查找,再到系统路径/usr/lib/python3.5/查找,再到其他系统路径查找 2.模块发布 1)模块目录结构 Msg ├── __init__.py ├── recv ...
- nio之netty3的应用
1.netty3是nio的封装版本.在使用上面比nio的直接使用更好.nio简单使用都是单线程的方式(比如:一个服务员服务很多客户),但是netty3的方式不一样的是,引入线程池的方式来实现服务的通信 ...
- MySQL高级-慢查询日志
一.慢查询日志是什么 1. 2. 3. 2.开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢? 3.案例 1.查看当前多少秒算慢 2.设置慢的阙值时间 3.为什么设置后看不出变化? 4.记 ...
- hdu1789 Doing Homework again(贪心+排序)
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 应用UserDefaults储存游戏分数和最高分
应用UserDefaults储存游戏分数和最高分 我们在GameScene.swift里 private var currentScore:SKLabelNode! // 当前分数节点 private ...
- SQL学习(时间,存储过程,触发器)
SQL学习 几个操作时间的函数 --datapart 获取时间中的年月日时分秒等部分 select DATEPART(year,current_timestamp); select DATEPART( ...
- 腾讯地图和百度地图的PHP相互转换
/** * 百度地图---->腾讯地图 * @param double $lat 纬度 * @param double $lng 经度 * @return array(); */ functio ...