网络传输?不知道我以前写自动HTTP POST数据的方法对你有没有帮助:
说明:strName, strID, strContact, strPhont都是Unicode的汉字或数字字符串;
Post出去前要把它转化成类似于下面的Base64编码形式:
这样的形式,中间的"wd=%D6%D0%B9%FA"实际上就是"wd=中国".
下面的代码中关键的是红色的部分:QUrl::toPercentEncoding()
而里面的Utf8_To_GB()函数,则是你上面提到的我以前发帖子说的GB和UTF8汉字编码互相转换的例子。接收到后解码,则使用下面的函数
QString QUrl::fromPercentEncoding ( const QByteArray & input )
Quote:
QString strName = GenName();
QString strID = GenPID(LineEditName->text());
QString strContact = GenContact();
QString strPhone = GenPhone();
QString data = "name=" + QUrl::toPercentEncoding(Utf8_To_GB(strName)) + "&shengfenzhenghao=" + strID + "&content=" + strID + "&phone=" + strPhone + "&idhao=81&website=&email=&button=" + QUrl::toPercentEncoding(Utf8_To_GB(QString::fromLocal8Bit("投票")));
在你的程序中,如果汉字需要GB编码的话,就使用Utf8_To_GB()函数把它转换过来,如果使用的是Unicode的话,不需要使用Utf8_To_GB()函数
谢谢,刚刚看过那篇文章,我现在在发送时使用
QTextCodec *codec = QTextCodec::codecForName("utf8");
QByteArray data = codec->fromUnicode(msgContent);
将msgContent转换成QByteArray,在接收时使用
QTextCodec *codec = QTextCodec::codecForName("utf8");
QString a;
a = codec->toUnicode(listPart.at(2));
将QByteArray转换成QString,现在已经可以正常显示中文了,谢谢!