Symbian 中文显示问题
2010-06-22 02:54:00 来源:WEB开发网错误,但只要在“人”字后面加个空格或''字符又可以通过了,,
第三种方法
一、定义一个新的文件,命名为Common.h
其中包含如下代码
// 因为要使用CCnvCharacterSetConverter类,相应的lib文件和
#include
void ConvertToUnicode(TDes& aTarget, const TDesC8& aSource)
{
CCnvCharacterSetConverter *converter = CCnvCharacterSetConverter::NewLC();
if(converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk, CEikonEnv::Static()->FsSession()) != CCnvCharacterSetConverter::EAvailable)
{
User::Leave(KErrNotSupported);
}
TInt state = CCnvCharacterSetConverter::KStateDefault;
converter->ConvertToUnicode (aTarget, aSource, state);
CleanupStack::PopAndDestroy();
}
二、在HelloWorldAppui.cpp中
1、增加一行 #include "Common.h"
2、将第一种方法中的HelloWorldAppui.cpp::HandleCommandL()中的相应代码改为如下代码:
_LIT8(KText8, "中国");
TBuf<10> BufTemp;
ConvertToUnicode(BufTemp, KText8);
CAknInformationNote* note = new (ELeave) CAknInformationNote;
note->ExecuteLD(BufTemp);
方法比较:
1、效率性:
第一种方法和第二种方法差不多,第三种方法效率明显低于前两种,主要表现在执行ConvertToUnicode(BufTemp, KText8);时
2、灵活性:
第一种应该是最麻烦的,主要表现在定义字符串常量时,需在rsst和loc两个文件中定义
第三种方法最方便,尤其是对动态变化的文字,可以随时定义,随时更改,比较灵活,
建议:
1、对于标准控件上需要显示的中文采用第一种方法,如菜单、对话框等上的文字,系统提供了定义标准控件时要用到的一系列结构体,如MENU、DIALOG等,
2、对于自定义控件需要显示的中文,不会或很少变化的中文采用第二种方法
3、对于动态变化的文字,采用第三种方法,但是能采用第二种的尽量采用第二种,因为第三种方法实在是太慢了,在N6670真机上,当执行ConvertToUnicode(BufTemp, KText8);9次时,差不多需要1秒时间
原文:http://blog.csdn.net/miyunhong/archive/2010/06/20/5681378.aspx
更多精彩
赞助商链接