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();
    // * */
     
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值