• 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

  • 相关阅读:
    JS调用摄像头拍照,编辑jscam.swf自定义清晰度,兼容IE
    Hbase 永久 Region-In-Transition 的查错记录
    hbase meta中分区信息错误的记录
    spark aggregateByKey 时 java.lang.OutOfMemoryError: GC overhead limit exceeded
    在 aws emr 上,将 hbase table A 的数据,对 key 做 hash,写到另外一张 table B
    EMR 配置纪录(不断更新)
    使用 JvisualVM 监控 spark executor
    YARN 集群的资源分配
    spark bulkload hbase笔记
    记一个 protobuf 的 jar 包冲突
  • 原文地址:https://www.cnblogs.com/findumars/p/8436746.html
Copyright © 2020-2023  润新知