您的位置:首页 > 其它

GBK Unicode UTF 一点转换方法收集

2009-11-27 10:00 363 查看
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: