rsocket 发送中文字符串乱码问题

在用rsocket 发送中文字符串给tcp server的时候 server端接收到的字符串乱码。

参照http://blog.csdn.net/kaiming2008/archive/2008/12/04/3441559.aspx的symbian关于字符编码转换文章解决了。

 

添加头文件
#include <charconv.h>        //  for char set convert GBK - Unicode
在mmp里面添加
LIBRARY         charconv.lib    // for GBK to Unicode converter

这两步完成后,重新编译;

添加如下方法

/**
 * Handle the selected event.
 * @param aCommand the command id invoked
 * @return ETrue if the command was handled, EFalse if not
 */
void CrailwayLoginListView::ConvUni2Gbk(TDesC& original, TDes8& res) {
        TInt state=CCnvCharacterSetConverter::KStateDefault ;
        CCnvCharacterSetConverter* iConv ;
        iConv = CCnvCharacterSetConverter::NewLC();
        if(iConv->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,
                iEikonEnv->FsSession())!=CCnvCharacterSetConverter::EAvailable)
                User::Leave(KErrNotSupported);
        iConv->ConvertFromUnicode(res, original, state) ;
        CleanupStack::PopAndDestroy() ;
}

 

TBuf<100> Lmsg(l);
    Lmsg.Append(si);
    Lmsg.Append(Wname);
    Lmsg.Append(si);
    Lmsg.Append(WpassWord);
    TBuf8<100> tmp;
    ConvUni2Gbk(Lmsg,tmp);//经过转码之后  用sendLogin就不乱码了
   
    pApp->iEngine->InitL();
            pApp->iEngine->ConnectL();
            pApp->iEngine->SendLogin(tmp);

 

 

socketEngine.cpp中定义如下方法

void CSocketEngine::SendLogin(TBuf8<100> msg)
    {
 
    TRequestStatus status(KRequestPending);
    iSocket.Send(msg, 0, status);
    User::WaitForRequest(status);
    User::LeaveIfError(status.Int());
   
    // 等待服务器端返回数据
    //RecvInfoL();
    // * */
     
    }

你可能感兴趣的:(rsocket 发送中文字符串乱码问题)