【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());
相关推荐
FL162386312931 分钟前
[深度学习][python]yolov11+bytetrack+pyqt5实现目标追踪
深度学习·qt·yolo
XKSYA(小巢校长)36 分钟前
NatGo我的世界联机篇
开发语言·php
Cons.W39 分钟前
Codeforces Round 975 (Div. 1) C. Tree Pruning
c语言·开发语言·剪枝
憧憬成为原神糕手41 分钟前
c++_ 多态
开发语言·c++
VBA633741 分钟前
VBA信息获取与处理第三个专题第三节:工作薄在空闲后自动关闭
开发语言
wjs20242 小时前
XSLT 实例:掌握 XML 转换的艺术
开发语言
萧鼎2 小时前
Python第三方库选择与使用陷阱避免
开发语言·python
安冬的码畜日常2 小时前
【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)
开发语言·前端·javascript·信息可视化·数据可视化·d3.js
一颗星星辰2 小时前
C语言 | 第十章 | 函数 作用域
c语言·开发语言
lxp1997412 小时前
php函数积累
开发语言·php