Qt写入unicode编码格式的文本(用QChar写入BOM标记,并且列出所有Qt支持的字符集)

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt写入unicode编码格式的文本(用QChar写入BOM标记,并且列出所有Qt支持的字符集)相关的知识,希望对你有一定的参考价值。

1、文本流设置unicode小端模式

2、写入文本前两个字节FF FE

3、字符串转成unicode编码

 

QList<QByteArray> list =  QTextCodec::availableCodecs();
//可以获取Qt支持的编码,下面列出字符串的几种编码名称
//GBK  GB2312
//unicode  小端
//UTF-8
//UnicodeLitteUnmarked  小端
//UnicodeBigUnmarked    大端
[cpp] view plain copy
 
  1. #include <QApplication>  
  2. #include <QFile>  
  3. #include <QTextStream>  
  4. #include <QTextCodec>  
  5.   
  6. int main(int argc, char *argv[])  
  7. {  
  8.     QApplication a(argc, argv);  
  9.     //    Widget w;  
  10.     //    w.show();  
  11.   
  12.     QFile fielWrite("a.txt");  
  13.   
  14.     if (!fielWrite.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate))  
  15.     {  
  16.         return 0;  
  17.     }  
  18.   
  19.     QTextStream out(&fielWrite);  
  20.     out.setCodec(QTextCodec::codecForName("unicode"));//unicode小端模式  
  21.     //out.setAutoDetectUnicode(true); //好像没用处  
  22.     QChar head = 0xfeff;//unicode文件头 文本里前两个字节为FFFE  
  23.     out << head;  
  24.     QString str = "我";//"我"在Qt文本编辑器里默认是UTF-8编码格式,转成QString之后为unicode编码  
  25.     out << str;  
  26.     fielWrite.close();  
  27.   
  28.     return a.exec();  
  29. }  

http://blog.csdn.net/bladeandmaster88/article/details/54868654

在qt5.9中,使用
out.setCodec(QTextCodec::codecForName("unicode"));//unicode小端模式 
无法输出unicode的txt文件,需要改为:
out.setCodec("UTF-16");
详细请见qt帮助文档

----------------------------------------------------------------------------------------------------------------

 

QList<QByteArray> list = QTextCodec::availableCodecs();
qDebug() << list;

 

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
Big5-HKSCS
Big5
Big5-ETen
CP950
windows-949
CP949
EUC-KR
Shift_JIS
SJIS
MS_Kanji
ISO-2022-JP
JIS7
EUC-JP
GB2312
GBK
CP936
MS936
windows-936
GB18030
hp-roman8
roman8
csHPRoman8
TIS-620
ISO 8859-11
WINSAMI2
WS2
macintosh
Apple Roman
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
ISOtΰP

以上是关于Qt写入unicode编码格式的文本(用QChar写入BOM标记,并且列出所有Qt支持的字符集)的主要内容,如果未能解决你的问题,请参考以下文章

QChar

QT-QString与Qchar

QT的字符编码

如何实现 qt 中qfile写出的文本 设置为unicode编码 在线等 谢谢。。。

Qt界面显示乱码问题

c语言言里一个汉子占两个字节,而在qt中一个汉子占4个字节,请教大神怎么把qt中的汉字编码成两个字节啊?