一些QT的字符转换

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 

说明:windows中ie地址栏写“我们”

发送到服务器端会变为“%CE%D2%C3%C7”,

是GB2312转换成URL 百分号编码的形式ubuntu中firefox地址栏写“我们”发送到服务器变成”%E6%88%91%E4%BB%AC”,

是UTF-8转换成URL 百分号编码的形式

下面分享汇总后的转换代码:(我的环境:ubuntu10.10 QT4.6.2)01

//Ubuntu firefox http get "我们" %E6%88%91%E4%BB%AC UTF-802

//Windows ie http get "我们" %CE%D2%C3%C7 GB231203

char* s="0x我们"; 

 //UTF-8 char*

QString strT1="0x%CE%D2%C3%C7"; 

 //GB2312的URL百分号编码05

QByteArray baT1,baT2,baT3,baT4;

PercentEncoding2ByteArray(strT1, baT1); //自己写的函数,由于QUrl::fromPercentEncoding仅适用UTF-8的URL编码

strT1=QTextCodec::codecForName("GB2312")->toUnicode(baT1); //GB2312's QByteArray Convert to QString Unicode

baT2=QTextCodec::codecForName("GB2312")->fromUnicode(strT1); //QString Unicode convert to GB2312 QByteArray

QString strT2,strT3,strT4,strT5;

strT2=QTextCodec::codecForName("UTF-8")->toUnicode("0x我们"); //UTF-8 Char* to Unicode QString

baT3=QTextCodec::codecForName("UTF-8")->fromUnicode(strT2); //Unicode QString to UTF-8 QByteArray

strT3=QTextCodec::codecForName("UTF-8")->toUnicode(s); //UTF-8 Char* to Unicode QString

strT4=QUrl::toPercentEncoding(QString::fromLocal8Bit(s)); //UTF-8 Char* to PercentEncoding (UTF-8 format)

strT5=QUrl::fromPercentEncoding("0x%E6%88%91%E4%BB%AC"); //PercentEncoding (UTF-8 format) to Unicode

baT4=QTextCodec::codecForName("GB2312")->fromUnicode(QTextCodec::codecForName("UTF-8")->toUnicode(s)); //UTF-8 Char* to GB2312 QByteArray

另附一个小函数:(用于GB2312的URL百分号编码转换)

void PercentEncoding2ByteArray(QString strInput, QByteArray & ByteArrayOut)

{

 for(int i=0; i<strInput.length();)

 {

 if (0==QString::compare(strInput.mid(i,1), QString("%")))

 {

 if ((i+2)<strInput.length())

 {09 ByteArrayOut.append(strInput.mid(i+1,2).toShort(0,16));

 i=i+3;11 }12 else13 {14 ByteArrayOut.append(strInput.mid(i,1));

 i++;

 }

 }

 else

 {

 ByteArrayOut.append(strInput.mid(i,1));

 i++;

 }

 }

//For end

}// PercentEncodin


欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值