1. SDK开发包中的模拟器显示汉字问题. 2. 在真实手机上显示汉字。 在你的程序里面,首先得include系统根据rss文件生成的rsg头文件,里面包含了 然后在程序中,使用下面这个函数来创建资源 { u16 len; char string[MAX_CHAR]; // 不包括字符串长度 }Utf8; // desc :把一个常规字符串转换成一个utf8编码的字符串 Utf8* utf8_convert(const char *string) { char utf8[10*MAX_CHAR]; WCHAR wstr[10*MAX_CHAR]; int wsz; int utf8sz; Utf8 *pUtf8;
wsz= MultiByteToWideChar(CP_ACP, 0, (const char*)string,(int)strlen(string)+1,wstr,sizeof(wstr)/sizeof(wstr[0]) ); utf8sz= WideCharToMultiByte(CP_UTF8, 0, wstr, -1,utf8, sizeof(utf8), NULL, NULL );
pUtf8 = (Utf8*)malloc(sizeof(Utf8)); strcpy(pUtf8->string,utf8); pUtf8->len = (u16)(utf8sz-1); return pUtf8; } { // CcnvCharacterSetConverter API来转换 CCnvCharacterSetConverter* converter=CCnvCharacterSetConverter::NewLC(); if(converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk, iCoeEnv->FsSession())!=CCnvCharacterSetConverter::EAvailable) User::Leave(KErrNotSupported); TText8 *str = (TText8*)text; TInt state=CCnvCharacterSetConverter::KStateDefault; TPtrC8 source( str );
HBufC16* iInfoText = HBufC16::NewL(source.Length()*2); TPtr16 ptr = iInfoText->Des(); if(CCnvCharacterSetConverter::EErrorIllFormedInput == converter->ConvertToUnicode(ptr, source, state)) User::Leave(KErrArgument); //Leave if error in conversion. CleanupStack::PopAndDestroy(); //clean for converter
//delete converter; return iInfoText; } |
symbian 汉字显示
最新推荐文章于 2024-09-15 22:47:38 发布