这个问题我遇到过。一般接收汉字需要使用QString类,比如从QTextEdit上获取输入的文本。但传输数据的时候需要使用QByteArray。这样就免不了将QSring转化为QByteArray。除了常见的toAscii()函数外,还必须做这样的设置:
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
如此才能保证在做中文编码的时候选择的codec版本是正确的。
至于二楼提到的编解码的问题,不建议使用,比如QDataStream,QTextStream,都不要用。做简单的工作时使用它们比不使用更麻烦,尤其对初学者来说。况且使用QByteArray基本都能搞定,也不费什么事。使用编解码的好处就在于,我这里传输一个QPixmap对象过去,那边能够直接解析成QPixmap对象去用。如果有这种需要的,可以参考这些编解码方面的内容。