GBK Unicode UTF 一点转换方法收集

 1 GBK和Unicode相互转换
void ConvUni2Gbk(TDesC& original, TDes8& res)
 {
 TInt state = CCnvCharacterSetConverter::KStateDefault;
 CCnvCharacterSetConverter* iConv;
 iConv = CCnvCharacterSetConverter::NewLC();
 if (iConv->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,
   CEikonEnv::Static()->FsSession())
   != CCnvCharacterSetConverter::EAvailable)
  User::Leave(KErrNotSupported);
 iConv->ConvertFromUnicode(res, original, state);
 CleanupStack::PopAndDestroy();
 }
void ConvGbk2Uni(TDesC8& original, TDes& res)
 {
 RFs aFileServerSession;
 aFileServerSession.Connect();
 CCnvCharacterSetConverter* converter = CCnvCharacterSetConverter::NewLC();

 if (converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,
   aFileServerSession) != CCnvCharacterSetConverter::EAvailable)
  User::Leave(KErrNotSupported);

 TInt state = CCnvCharacterSetConverter::KStateDefault;

 TPtrC8 str(original);
 HBufC* iInfoText = HBufC::NewL(str.Length());
 TPtr16 ptr = iInfoText->Des();

 if (CCnvCharacterSetConverter::EErrorIllFormedInput
   == converter->ConvertToUnicode(ptr, str, state))
  User::Leave(KErrArgument);

 res.Zero();
 res.Copy(ptr);
 aFileServerSession.Close();
 CleanupStack::PopAndDestroy();
 delete iInfoText;
 }

2 UniCode和UTF8的转换用CnvUtfConverter类的方法即可
比如:视图之间传递数据用
IMPORT_C void CAknView::ActivateViewL  (  const TVwsViewId &  aViewId,
  TUid  aCustomMessageId,
  const TDesC8 &  aCustomMessage
 )

 要是aCustomMessage是中文的话,是16位的,需要转换成UTF8,传递过去,
 在使用的时候再转换成Unicode。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值