//创建一个转换器且转换器放入清除栈,需要打开文件服务器
converter = CCnvCharacterSetConverter::NewLC();
User::LeaveIfError(fSession.Connect());
CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* arrayOfCharacterSetsAvailable =
converter-> CreateArrayOfCharacterSetsAvailableLC(fSession);
converter->AutoDetectCharSetL(aConfidenceLevel, aCharacterSetIdentifier,
*arrayOfCharacterSetsAvailable, sample);
//if(aCharacterSetIdentifier == KCharacterSetIdentifierUtf8)
//if(aCharacterSetIdentifier == KCharacterSetIdentifierUnicodeLittle
///|| aCharacterSetIdentifier == KCharacterSetIdentifierUnicodeBig)
if(KCharacterSetIdentifierUcs2 == aCharacterSetIdentifier)
{
input.Copy(text);
((CEikEdwin *) control)->SetTextL(&input);
CleanupStack::PopAndDestroy();
fSession.Close();
CleanupStack::PopAndDestroy();
return 0;
}
if (converter->PrepareToConvertToOrFromL(aCharacterSetIdentifier, fSession)
!= CCnvCharacterSetConverter::EAvailable)
{
CleanupStack::PopAndDestroy();
fSession.Close();
CleanupStack::PopAndDestroy();
input.Copy(text);
((CEikEdwin *) control)->SetTextL(&input);
}
else
{
TText8* str = (TText8*) content;
TInt state = CCnvCharacterSetConverter::KStateDefault;
TPtrC8 source(str);
HBufC* iInfoText = HBufC::NewL(source.Length());
TPtr16 ptr = iInfoText->Des();
if (CCnvCharacterSetConverter::EErrorIllFormedInput ==
converter->ConvertToUnicode(ptr, source, state))
User::Leave(KErrArgument);
CleanupStack::PopAndDestroy();
fSession.Close();
CleanupStack::PopAndDestroy();
//返回unicode编码的描述符,记得在调用这个函数显示中文后要删除此描述符
((CEikEdwin *) control)->SetTextL(iInfoText);
delete iInfoText;
}