【QT】Qt读取ANSI格式文件

Qt使用Unicode来表示字符串。但是通常需要访问一些非Unicode格式的字符串,例如打开一个GBK编码的中文文本文件,甚至一些非Unicode编码的日文,俄文等。

Qt提供了QTextCodec类用于不同编码格式之间的转换。关于Qt字符串格式转换以及QTextCodec的使用方式,网上有很多资料。其中大多数看起来很复杂,甚至根本无法完成转换工作,或者是基于较低的Qt版本编写。因此,有必要对使用QTextCodec完成字符串格式转换进行简要说明,本文中代码基于Qt5.1编写。

其实,在Qt帮助手册中就有示例代码,但是是基于俄文的,这里简单修改为中文编码之间的转换。

将GBK编码(ANSI的简体中文编码)转换为Unicode编码格式:

复制代码
QByteArray encodedString = "...";
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString string = codec->toUnicode(encodedString);

将Unicode编码转换为GBK编码格式:

复制代码
QString string = "...";
QTextCodec *codec = QTextCodec::codecForName("GBK");
QByteArray encodedString = codec->fromUnicode(string);

下面给出读取GBK编码的TXT文件的示例代码:

复制代码
QFile file("FileName");
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString line = codec->toUnicode(file.readLine());
相关推荐
hello 早上好16 小时前
07_JVM 双亲委派机制
开发语言·jvm
前端程序猿i17 小时前
第 8 篇:Markdown 渲染引擎 —— 从流式解析到安全输出
开发语言·前端·javascript·vue.js·安全
kronos.荒17 小时前
滑动窗口:寻找字符串中的字母异位词
开发语言·python
_codemonster17 小时前
java web修改了文件和新建了文件需要注意的问题
java·开发语言·前端
甄心爱学习17 小时前
【python】list的底层实现
开发语言·python
独自破碎E17 小时前
BISHI41 【模板】整除分块
java·开发语言
Laurence17 小时前
使用 CLion 打开 Qt Creator 项目(.pro 文件)
qt·clion·转换·creator·创建项目·qmake·.pro
hewence117 小时前
Kotlin CoroutineContext 详解
android·开发语言·kotlin
IvanCodes17 小时前
七、C语言指针
c语言·开发语言
寻寻觅觅☆17 小时前
东华OJ-基础题-120-顺序的分数(C++)
开发语言·c++·算法