首页 > Qt字符编码,创建中文文件

Qt字符编码,创建中文文件

1.代码文件本身编码;

2.Qt中用于控制读入和写出文件系统时的字符编码由QTextCodec::setCodecForLocale()所决定。一般不用设置,Qt跟系统交互时会根据系统的Locale来更改传给系统的参数的编码;

//utf8格式

QString str1("你好Hello ");QByteArray bLocal = str1.toLocal8Bit(); // 受setCodecForLocale影响,会转换为设定的编码。如果本机不支持指定编码,则会按toLatin1处理QByteArray bUtf8 = str1.toUtf8(); // 不受setCodecForLocale影响,强制转换为UTF-8编码qDebug() << str1; // 正常,Qt会将UTF-16转换为UTF-8输出qDebug() << bLocal; // 乱码,用UTF-8编码输出GBK字节流qDebug() << bUtf8; // 正常,用UTF-8编码输出UTF-8字节流 QString str2 = QString::fromLocal8Bit(bLocal);qDebug() << str2; // 正常,因为上面显式指定字节流来自本机编码,而bLocal正是本机编码GBK QString strTitle("你好Hello");QFile file(strTitle);if(!file.open(QIODevice::WriteOnly|QIODevice::Append))return false;file.write(QString::fromUtf8("你好啊Hello测试中 ").toLocal8Bit());file.write(bUtf8);file.write(bLocal);file.write("1122测试中 ");file.write(QString::fromUtf8("你好啊Hello ").toLocal8Bit());file.close();

//gbk格式

  
 QString str1=QString::fromLocal8Bit("你好Hello
");QByteArray bLocal = str1.toLocal8Bit(); // 受setCodecForLocale影响,会转换为设定的编码。如果本机不支持指定编码,则会按toLatin1处理QByteArray bUtf8 = str1.toUtf8();       // 不受setCodecForLocale影响,强制转换为UTF-8编码qDebug() << str1;                       // 正常,Qt会将UTF-16转换为UTF-8输出qDebug() << bLocal;                     // 乱码,用UTF-8编码输出GBK字节流qDebug() << bUtf8;                      // 正常,用UTF-8编码输出UTF-8字节流QString str2 = QString::fromLocal8Bit(bLocal);qDebug() << str2;                       // 正常,因为上面显式指定字节流来自本机编码,而bLocal正是本机编码GBKQString strTitle=QString::fromLocal8Bit("你好Hello");QFile file(strTitle);if(!file.open(QIODevice::WriteOnly|QIODevice::Append))return false;file.write(QString::fromLocal8Bit("你好啊Hello测试中
").toLocal8Bit());file.write(bUtf8);file.write(bLocal);file.write("1122测试中
");file.write(QString::fromLocal8Bit("你好啊Hello
").toLocal8Bit());file.close();
 

  

 

转载于:https://www.cnblogs.com/karltong/p/9408819.html

更多相关:

  • 很多同学对于编码问题都不是很清楚,计算机常见的编码格式为: ASCII ISO-8859-1 GB2312 GBK UTF-8 UTF-16 对于Python开发中,我们一般都是采用统一的编码格式:UTF-8第一行加入环境申明: #coding=utf-8 编码操作方式一般都分为:编码(encode)和解码(decode) 但是对于...

  • 函数近似方法7.1 目标预测(VE‾overline{VE}VE)7.2 随机梯度下降和半梯度下降例7.1: 1000态随机行走的状态收敛7.3 线性近似7.4 线性方法的特征构造7.4.1 Coarse Coding(粗编码)例7.2:粗编码的粗度7.4.2 Tile Coding(瓦片编码)7.4.3 实例:Tile Codin...

  • 1,Ascii和ebcic. 为了方便交流,美国人发明了ASCII编码,后来被确认为国际标准。后来以发明了EBCDIC编码。 一般地说,开放的操作系统(LINUX 、WINDOWS等)采用ASCII 编码,而大型主机系统(MVS 、OS/390等)采用EBCDIC 编码。在发送数据给对方前,需要事先告知对方自己所使用的编码,或者通过...

  • Unicode字符集中收录110多万个字符集合。UTF-8(8-bit Unicode Transformation Format),是一种针对 Unicode 的可变长度字符编码方式。使用一到四个字节来编码 Unicode 字符 在计算机内存中统一使用Unicode编码,当需要保存到硬盘或者需要传输时,转换为UTF—8编码。 字符...

  • ----------------基本概念-------------------------------一.位: 计算机存储信息的最小单位,称之为位(bit),音译比特,二进制的一个“0”或一个“1”叫一位。 二.字节 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位,8个二进制位组成1个...

  • 1.QString转换String string s = qstr.toStdString(); 2.String转换QString QString qstr2 = QString::fromStdString(s);...