如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
symbian中文字符串显示问题的解决(2009-04-2709:28:11)标签:HYPERLINK"http://uni.sina.com.cn/c.php?t=blog&k=???&ts=bpost&stype=tag"杂谈分类:HYPERLINK"http://blog.sina.com.cn/s/articlelist_1396356124_1_1.html"symbiansymbian中文字符串显示问题的解决作者:未知∣来源:∣原文地址∣2006-3-11相信大家都在处理symbian中文显示的时候遇到了这种问题,我现在就给总结一下这种问题的解决方法:字符串编码中文表示常用的有:GB2312,GBK,Unicode,UTF-8其中GBK是GB2312的超集,也就是涵盖了GB2312编码的所有内容,UTF-8是Unicode的在网络传输中的一种编码格式,如果我们使用vc做为开发工具,在win下面进行开发,那么win的默认字符集是GBK的,而symbian系统默认的编码方式却是Unicode,也就是说直接写在程序里面的汉字在手机上显示的时候,就会变成乱码。通常解决这个问题的方法有两种:(1)静态资源文件解决方案(2)动态的调用字符集转换函数解决方案对呀第一种解决方案来说,需要手工编辑rss文件,把汉字内容部分改为UTF-8格式,在rss文件的末尾或者开头添加:CHARACTER_SETUTF8即可缺点是这种字符串一般针对静态资源,如果是那种随时根据数据变化更新汉字的情况则需要考虑第二种情况第二种情况动态转换字符集的方法添加头文件#include//forcharsetconvertGBK-Unicode在mmp里面添加LIBRARYcharconv.lib//forGBKtoUnicodeconverter这两步完成后,重新编译;下面的这两个函数就可以用了。voidCMcAppUi::ConvGbk2Uni(TDesC8&original,TDes&res){#ifndef__WINS__RFsaFileServerSession;aFileServerSession.Connect();CCnvCharacterSetConverter*converter=CCnvCharacterSetConverter::NewLC();if(converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,aFileServerSession)!=CCnvCharacterSetConverter::EAvailable)User::Leave(KErrNotSupported);TIntstate=CCnvCharacterSetConverter::KStateDefault;TPtrC8str(original);HBufC*iInfoText=HBufC::NewL(str.Length());TPtr16ptr=iInfoText->Des();if(CCnvCharacterSetConverter::EErrorIllFormedInput==converter->ConvertToUnicode(ptr,str,state))User::Leave(KErrArgument);res.Zero();res.Copy(ptr);aFileServerSession.Close();CleanupStack::PopAndDestroy();deleteiInfoText;#elseres.Format(_L(”waynelen%d”),original.Length());#endif}voidCMcAppUi::ConvUni2Gbk(TDesC&original,TDes8&res){#ifndef__WINS__TIntstate=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();#e