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 大端
- #include <QApplication>
- #include <QFile>
- #include <QTextStream>
- #include <QTextCodec>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- // Widget w;
- // w.show();
- QFile fielWrite("a.txt");
- if (!fielWrite.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate))
- {
- return 0;
- }
- QTextStream out(&fielWrite);
- out.setCodec(QTextCodec::codecForName("unicode"));//unicode小端模式
- //out.setAutoDetectUnicode(true); //好像没用处
- QChar head = 0xfeff;//unicode文件头 文本里前两个字节为FFFE
- out << head;
- QString str = "我";//"我"在Qt文本编辑器里默认是UTF-8编码格式,转成QString之后为unicode编码
- out << str;
- fielWrite.close();
- return a.exec();
- }
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支持的字符集)的更多相关文章
- Delphi读取和写入utf-8编码格式的文件
读取UTF-8格式的文件内容 function LoadUTF8File(AFileName: string): string; var ffileStream:TFileStream; fAnsiB ...
- python2下向文件写入unicode编码的内容,codecs包
python内置库中的open方法只能读写ascii码,如果想写入Unicode字符,需要使用codecs包. # -*- coding: utf-8 -*- import codecs import ...
- Logstash读取文本信息并写入到ES
Logstash读取文本信息并写入到ES 前提是ELK安装没问题 进入到logstash安装目录下的bin目录(我的logstash安装目录:/usr/local/) [root@es1 bin]# ...
- DELPHI7加载UNICODE编码格式的TXT显示为乱码的解决方法
DELPHI7的STRING默认是ANSI编码,加载UNICODE编码格式的TXT显示为乱码,解决方法如下: procedure TForm1.Button1Click(Sender: TObject ...
- ASCII、Unicode、UTF-8、UTF-8(without BOM)、UTF-16、UTF-32傻傻分不清
ASCII.Unicode.UTF-8.UTF-8(without BOM).UTF-16.UTF-32傻傻分不清 目录 ASCII.Unicode.UTF-8.UTF-8(without BOM). ...
- Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类
话接上篇.成功配置好Qt+Lua+toLua后,我们可以实现在Lua脚本中使用各个Qt的类.直接看代码吧. #include "include/lua.hpp" #include ...
- CSS 文本溢出时显示省略标记
如标题所示... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.o ...
- ES 18 - (底层原理) Elasticsearch写入索引数据的过程 以及优化写入过程
目录 1 Lucene操作document的流程 1.1 添加document的流程 1.2 删除document的流程 2 优化写入流程 - 实现近实时搜索 2.1 流程的改进思路 2.2 设置re ...
- java写入文件之txt文本
FileWriter fw=new FileWriter("D:\\test.txt") fw.write("文本值") fw.flush() fw.close ...
随机推荐
- java 编程思想-java运算符--曾经不太明确的
1.java 运算符 主要是逻辑运算符和按位运算符;移位运算符-name tecmint.txt 逻辑运算符:And(&&) ; OR(||);Not(!) 按位运算符:And(&am ...
- HTML、XHTML、css速记
一.HTML 下面内容记录经常使用的html元素.可另存为html文件以查看效果: <!doctype html> <html lang="zh-cn"> ...
- js进阶 13-7 如何实现滑动面板效果
js进阶 13-7 如何实现滑动面板效果 一.总结 一句话总结:就是普通的jquery动画中的滑动效果.$('#content').slideToggle().滑动效果的实质是通过调整高度. 1.滑动 ...
- amazeui学习笔记--css(基本样式2)--基础设置Base
amazeui学习笔记--css(基本样式2)--基础设置Base 一.总结 1.盒子模型:外margin,内padding,这里的内外指的边框 2.border-box:Amaze UI 将所有元素 ...
- 微信支付v2开发(3) JS API支付
本文介绍如何使用JS API支付接口完成微信支付. 一.JS API支付接口(getBrandWCPayRequest) 微信JS API只能在微信内置浏览器中使用,其他浏览器调用无效.微信提供get ...
- Android 仿今日头条频道管理(下)(GridView之间Item的移动和拖拽)
前言 上篇博客我们说到了今日头条频道管理的操作交互体验,我也介绍了2个GridView之间Item的相互移动.详情请參考:Android 仿今日头条频道管理(上)(GridView之间Item的移动和 ...
- 对inetd、xinetd与TCP_Wrapper的基本了解
在Linux系统中有一个特殊的守护进程inetd(InterNET services Daemon),它用于Internet标准服务,通常在系统启动时启动.通过命令行可以给出inetd的配置文件,该配 ...
- 转 OC温故:类的三大特性(封装,继承,多态)
原文标题:OC学习篇之---类的三大特性(封装,继承,多态) 我们都知道,面向对象程序设计中的类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性 ...
- MySQL数据导出导入任务脚本
#!/usr/bin/env python#-*- encoding: utf8 -*- import timeimport osimport mysql.connector #定义一些全局变量 w ...
- [Angular2Fire] Firebase auth (Google, Github)
To do auth, first you need to go firebase.console.com to enable the auth methods, for example, enabl ...