WEB开发网
开发学院手机开发Symbian 开发 总结 symbian 显示中文 阅读

总结 symbian 显示中文

 2010-05-31 19:47:00 来源:WEB开发网   
核心提示:最近做项目,遇到一个 Symbian 中显示中文的问题,总结 symbian 显示中文,由于是刚开始接触 Symbian,遇到了很多困难,那么win的默认字符集是 GBK的,而symbian系统默认的编码方式却是Unicode,对于这个很基本的问题,借鉴了网上的一些方法最终还是解决了

最近做项目,遇到一个 Symbian 中显示中文的问题,由于是刚开始接触 Symbian,遇到了很多困难,对于这个很基本的问题,借鉴了网上的一些方法最终还是解决了,现总结如下。

中文字符编码常用的表示法有:GB2312,GBK,Unicode,UTF-8,其中GBK是GB2312的超集,也就是涵盖了GB2312编码的所有内容,UTF-8是 Unicode的在网络传输中的一种编码格式,如果我们使用vc做为开发工具,在win下面进行开发,那么win的默认字符集是 GBK的,而symbian系统默认的编码方式却是Unicode,也就是说直接写在程序里面的汉字在手机上显示的时候,就会变成乱码。

void CECommerceRestaurantContainer::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;

}

现在title16和msg16里面都存放的是16位的unicode中文字符串了.

下面是我在 Draw()函数中实现的显示代码:

void CECommerceRestaurantContainer::Draw(const TRect& aRect) const

{

CWindowGc& gc = SystemGc();

const CFont* myFont = NULL;

//myFont = LatinPlain12();

//myFont = LatinBold12();

//gc.UseFont(iEikonEnv->AnnotationFont());

myFont = ApacPlain16();

1 2  下一页

Tags:总结 symbian 显示

编辑录入:coldstar [复制链接] [打 印]
赞助商链接