Qt笔记:QTextStream指定编码
1. 不设置QTextStream的编码
不设置QTextStream的编码,设置了setAutoDetectUnicode(true)。
- 读取-若开启了自动检测Unicode编码,找到bom头,则使用检测到的编码,否则依赖QTextCodec::codecForLocale
- 写入-依赖QTextCodec::codecForLocale
2. 设置了QTextStream的编码
- 读取-若开启了自动检测Unicode编码,找到bom头,则使用检测到的编码,否则使用设置的编码读取
- 写入-使用设置的编码写入
QTextStream默认不写入bom,需调用setGenerateByteOrderMark(true)自行设置
示例:
QFile mFile(strPathFileName);if (!mFile.open(QIODevice::ReadOnly | QIODevice::Text))return;QString strFileData;QTextStream in(&mFile);in.setAutoDetectUnicode(true);QTextCodec* pCurCodec = QTextCodec::codecForName("UTF-8");in.setCodec(pCurCodec);while (!in.atEnd()) {QString line = in.readLine();//...}
3. QTextCodec支持的一些编码
具体的参看QTextCodec文档即可