GBK,UTF8等编码的中文转换预览

展示结果(中文“中文测试”):

UTF8源

UTF8源,用UTF8读,用UTF8写出:

中文测试
e4,b8,ad,e6,96,87,e6,b5,8b,e8,af,95

UTF8源,用GBK读,用UTF8写出:

涓枃娴嬭瘯
e6,b6,93,ee,85,9f,e6,9e,83,e5,a8,b4,e5,ac,ad,e7,98,af

UTF8源,用GBK读,用UTF8存,再用GBK读,用UTF8写出:

娑擃厽鏋冨ù瀣槸
e5,a8,91,e6,93,83,e5,8e,bd,e9,8f,8b,e5,86,a8,c3,b9,e7,80,a3,ee,85,a0,e6,a7,b8

GBK源

GBK源,用GBK读,用GBK存:(但是文件设置是默认utf8的)

���IJ���
d6,d0,ce,c4,b2,e2,ca,d4

GBK源,用GBK读,用UTF8存:(但是文件设置是默认utf8的)

中文测试
e4,b8,ad,e6,96,87,e6,b5,8b,e8,af,95

GBK源,用GBK读,用UTF8存,用GBK读,用UTF8存:(但是文件设置是默认utf8的)

涓枃娴嬭瘯
e6,b6,93,ee,85,9f,e6,9e,83,e5,a8,b4,e5,ac,ad,e7,98,af

背景介绍:

使用工具:qt库函数(编译版本:qt5.9)
影响因素:代码文件编码、读取方式编码、输出方式编码、设置编译器我使用的编码
测试函数代码:


void MainWindow::on_pushButton_clicked()
{
    char * cc = "中文测试";
    QByteArray show;

    show = cover(cc,"GBK","UTF8");
    //show = cover(show.data(),"GBK","GBK");
	//按照字节,输出十六进制内容
    for(int i=0;i<show.size();i++){
        qDebug("%x",show.at(i));
    }

    ui->textBrowser->clear();
    ui->textBrowser->append( QString(show) );
}


QByteArray MainWindow::cover(char* str1,char*  t1,char*  t2)
{
    //    QTextCodec::setCodecForLocale(utf8);
    QTextCodec *type_a = QTextCodec::codecForName(t1);
    QTextCodec *type_b = QTextCodec::codecForName(t2);

    QString strUnicode= type_a->toUnicode(str1);
    QByteArray bytes= type_b->fromUnicode(strUnicode);

    return bytes;
}

另外,main函数中添加了指定本代码文件编码为UTF-8的函数

    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

一些技巧

三个编码:
1.文档的编码
2.设置读取、输出的编码
3.设置程序的编码

一点常用的代码:

QTextStream stream(&readFile);
stream.setCodec("GBK");

QTextCodec* codec = QTextCodec::codecForName("UTF-8");
strAll = codec->toUnicode(readFile.readAll());
			
QTextCodec *codec = QTextCodec::codecForName("UTF-8");//或者"GBK",不分大小写
QTextCodec::setCodecForLocale(codec); //全局编码设置

以下为测试结果(旧):

代码文件UTF8,函数不做处理,结果:qdebug与界面控件均正常

代码文件UTF8,函数以UTF8读取,转为gbk输出,结果:全是黑色菱形方块问号

代码文件UTF8,函数以gbk读取,转为UTF8输出,结果:带有“涓”等奇怪的字
在这里插入图片描述

代码文件GBK,函数不做处理,结果:全是黑色菱形方块问号(且Qt Creator提示:warning: illegal character encoding in string literal)

代码文件GBK,函数以UTF8读取,转为gbk输出,结果为空

代码文件GBK,函数以gbk读取,转为UTF8输出,结果:全是“锟斤拷”
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超自然祈祷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值