当前位置: 代码迷 >> Symbian >> 一些局部变量定义为中文,为什么在手机上为乱码?而在Series60_v21_C的中文模拟器中显示正常?该怎么处理
  详细解决方案

一些局部变量定义为中文,为什么在手机上为乱码?而在Series60_v21_C的中文模拟器中显示正常?该怎么处理

热度:5786   发布时间:2013-02-26 00:00:00.0
一些局部变量定义为中文,为什么在手机上为乱码?而在Series60_v21_C的中文模拟器中显示正常?
局部变量或成员变量如果定义为中文字符的话,怎么在手机中正常显示呢?
这个应该和资源的中文版是两回事儿吧?

比如说:
_LIT(message,   qtn_appl_add);
CAknInformationNote*   informationNote   =   new   (ELeave)             CAknInformationNote;
informationNote-> ExecuteLD(message);

结果在Series60_v21_C的中文模拟器中显示正常,安装到手机中显示乱码,请问怎么解决?
当前系统:WinxpSp2英文版,
S60   sdk   为;Series60_v21_C,
ActiveState   ActivePerl   5.8,
java   :jre1.5.0_11

------解决方案--------------------------------------------------------
在rss文件定义如下:
RESOURCE TBUF r_str0 { buf = "正在呼叫。。。 ";}

在cpp文件:
TBuf <32> message;
iEikonEnv-> ReadResource(message,R_STR0);
CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
informationNote-> ExecuteLD(message);


------解决方案--------------------------------------------------------
看下ReadResource函数要求传入什么编码。。是UTF8还是UNICODE,代码中用到中文字串时与其保持一致就行了,建议最好做成资源文件,代码中读入,方便以后更改转换
------解决方案--------------------------------------------------------
少量中文的话,可以在字符串里使用该中文的unicode编码。
如:_L( "中文 ") -> _L( "\4ed2\6587 ") 注意:字节的高低位顺序
如果大量使用的话,一般在资源文件中定义。资源文件要使用utf8编码方式保存。
------解决方案--------------------------------------------------------
Jeff的方法是可行的

还要记得在rss文件中加入: CHARACTER_SET UTF8

就ok了
  相关解决方案