读取 txt 文件时, 很多时候无法获取文件的编码格式. 如果直接进行使用, 则有可能出现乱码. 需要在使用前将其转为 Unicode(Qt 的默认编码格式).
虽然实际的编码格式种类非常多, 但平常主要使用的有 GBK 与 UTF-8 两种. 可以依次尝试转换, 如果转换出现无效字符则认为不是该种编码格式.
- QString MainWindow::GetCorrectUnicode(const QByteArray &ba)
- {
- QTextCodec::ConverterState state;
- QTextCodec *codec = QTextCodec::codecForName("UTF-8");
- QString text = codec->toUnicode( ba.constData(), ba.size(), &state);
- if (state.invalidChars> 0)
- {
- text = QTextCodec::codecForName( "GBK" )->toUnicode(ba);
- }
- else
- {
- text = ba;
- }
- return text;
- }
来源: http://www.bubuko.com/infodetail-3264621.html