视图里显示中文的问题
我目前用的ide是Carbide c++ v1.2。我想做一个中文显示的程序。当然不是在.rls或.loc里面已经写好的中文,而是在视图中直接写中文并可以直接显示出来。可能这样说很不清楚,我举例一下:
例如:
const TInt KColorRed=35;
TRgb colorRed=AKN_LAF_COLOR(95);
gc.SetPenStyle( CGraphicsContext::ENullPen );
gc.SetPenColor( colorRed );
gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
//Draw Text
TBuf<16> text(_L("中文显示"));// 1.如果这边写的是英语那是一定显示正常的,但是
// 中文就会有错误
TPoint textPoint(2,50);
TZoomFactor devicemap(iCoeEnv->ScreenDevice());
// Set zoom factor at 200%
devicemap.SetZoomFactor(TZoomFactor::EZoomOneToOne*1.5);
TFontSpec fontSpec(_L("Times New Roman"),200);
// find the nearest font to the specified one
CFont* screenFont;
devicemap.GetNearestFontInTwips(screenFont,fontSpec);
// use it for this graphics context
gc.UseFont(screenFont);
gc.DrawText(text,textPoint);
// discard and release font
gc.DiscardFont();
devicemap.ReleaseFont(screenFont);
如果是这样写的话,那么是无法正常显示中文的,但有时候必需这样写中文。据了解,symbian os 都是使用unicode码的。但是我不知道如何转换才能正常显示。
补充一下:
在.rls里面写中文并在文件的最开始加了一句 CHARACTER_SET UTF8(同样,.rss文件也都加上这句)之后把这些文件保存成UTF8 - 无 BOM 格式。这样执行程序就可以正常显示中文了,而在编译器上看到是乱码。但当我在编译器上的:project->properties->info 把 Text file encoding 改成others->UTF-8 格式,那么之前的乱码变成正确的中文字了,而且在执行程序中也可以正常显示。试问,编译器在这种编码格式下,直接在视图下写中文为什么在执行程序下不能正常显示呢?而.rls里的汉字就能正常显示呢?是否CHARACTER_SET UTF8这句就已经把他们转换成Unicode码呢,不过看上去不像才是。