本文主要是介绍Qt+ICU识别文本文件编码并合并导出文本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
核心部分
识别文本编码,这里使用ICU
核心代码
/// <summary>/// 读取文本文件内容并返回QString/// </summary>/// <param name="path">文件路径</param>/// <returns>文本内容</returns>static QString readFile(QString path) {// icu识别字符编码UErrorCode status = U_ZERO_ERROR;UCharsetDetector* detector = ucsdet_open(&status);if (U_FAILURE(status)) {return "";}// 读取文件内容QFile file(path);if (!file.open(QIODevice::ReadOnly)) {return "";}QByteArray data = file.readAll();file.close();// 识别字符编码ucsdet_setText(detector, data.data(), data.size(), &status);if (U_FAILURE(status)) {return "";}const UCharsetMatch* match = ucsdet_detect(detector, &status);if (U_FAILURE(status)) {return "";}const char* charset = ucsdet_getName(match, &status);if (U_FAILURE(status)) {return "";}// 转换编码QTextCodec* codec = QTextCodec::codecForName(charset);QString text = codec->toUnicode(data);// 释放资源ucsdet_close(detector);return text;}
示例
示例源代码
https://github.com/WindSnowLi/ExportSource
这篇关于Qt+ICU识别文本文件编码并合并导出文本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!