博客园丁

我是博客园的一丁,我会永不停顿,不停创新。
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Symbian-中文问题/Chinese Related

Posted on 2006-11-02 21:50  Jason.Jiang  阅读(1370)  评论(0编辑  收藏  举报
中文问题/Chinese Related

在模拟器或者真机上面显示中文,这是一个不难的问题。
先说说模拟器。因为我很久很久没有用过0.9中文版的模拟器了,所以对其情况也忘记的差不多了。我想如果是0.9中文版的模拟器,显示中文应该没有什么大问题了,不过SDK V0.9中不全的header&lib,这个会对你开发程序造成影响吧,所以我还是不建议现在仍然在使用SDK V0.9。
那么使用英文版模拟器要如何显示中文呢?其实是不可以显示中文的。英文版的SDK中主要是说他的模拟器没有制作成中文版,所以如果你在菜单中写了中文,他是无法显示的。但是有一个例外,就是如果你在程序中实现Draw函数的时候使用了DrawText或者DrawTextVertical,并且事先把中文版模拟器中的中文字体复制到了模拟器中,那么模拟器是可以显示中文的。注意这其实是等同于“用字体在屏幕上面‘划*’字”,其中的实现机理我想我还没有什么研究,扯远了肯定会出错,所以大家如果有需要的话,在英文版模拟器上面Draw中文,可以复制一下中文版中的字体文件到英文版SDK的
epoc32\release\wins\udeb\z\system\fonts(大概是这里,我现在手边没有SDK来参考)
然后在DrawText之前调用一下字体就可以了。
*因为论坛中文系统的訽因,我无法输入那个关键的“籣”字,一横一个田下面一个半包围,所以暂时用这个错别字代替了,我目的就是说明它是Draw上去的。

在真机上面,大家显示中文无非就是按照上面那篇文档说的,一步一步来就可以了。
大体上,在程序中显示中文分为固定的用户界面中文字符串和程序运行时生成字符串。第一类使用较多,而且也基本上可以代替第二类,所以我还是主张大家不要在你的.cpp里面写中文字符串,虽然它是可以实现的。
用户界面中的字符串,Symbian系统是使用资源文件来保存并管理的。我们所需要知道的便是:在你的Project文件夹的data目录下面,编糭你的.RSS文件。这个文件中,你可以通过定义TBUF资源对象,来定义字符串。你定义的字符串,最好还是写成一个假名,比如

RESOURCE TBUF r_myprj_str_somestring
{
buf=qtn_myprj_str_somestring;
}

而这个qtn_myprj_str_somestring,你最好写在myprj.loc里面,这样:

#define qtn_myprj_str_somestring "Some String"

他的一个好处就是,你便于将你的程序作本地化/国际化处理。如果你的程序要做成很多语言的版本,那么你可以把你的用户界面字符串写成
myprj.en.loc
myprj.cn.loc
myprj.fr.loc
然后在编译的时候,只需要在你的rss文件中include不同的loc就可以了。这个就是他系统实现机制的考虑所在。
准备好了.RSS文件和.LOC文件并不是万事大吉了,很多朋友在这里没有试验成功的一个訽因就是在.RSS文件的头部,忘了加上
注意在RSS文件重要加入
CHARACTER_SET UTF8
或者是忘记了把.LOC文件给转换成UTF-8的格式。
我目前使用的是Windows NotePad来转换UTF-8格式的,需要注意是如果你使用的是英文版的Windows,那么它会在LOC文件的头部添加3个前导标示字符,你需要再用UltraEdit[非UTF-8自动辨认模式]来删除他们。