Qt中文编码的转换

发布时间 2023-10-08 10:36:02作者: 饼干`

Windows容易出现GBK编码乱码的问题,这里使用QTextCodec来转码:

假设你现在的编码是utf8,但是显示在windows上是乱码,那么你可以尝试以下操作:

// utf8转GBK
    QString buf = "你好";
    QTextCodec* code = QTextCodec::codecForName("gb2312");
    QByteArray arr = code->fromUnicode(buf);

那么arr保存的就是gbk编码格式的字符。

如果你现在的编码是gbk文字,显示到Qt中是乱码,那么你可以尝试以下操作:

// GBK转utf8
    QString buf = "你好";
    QTextCodec* code = QTextCodec::codecForName("gb2312");
    QString arr = code->toUnicode(buf.toStdString().data(),buf.length());

那么arr保存的就是utf8编码格式的字符。

具体的函数参数入参类型详见函数说明。

当然也可以使用QString自带的静态函数(local系列)实现转换,只不过他是根据本地环境进行转换的,不是确定性的,并且在项目跨平台时可能是错误的。