说到Symbian开发,不得不提的就是Symbian中令人郁闷至极的描述符。Symbian为了提高稳定性,引入了一系列的机制,描述符也是其中之一。从TDesC到RBuf,从16位Unicode到8位的UTF-8,之间那说不清理还乱的关系不但让Symbian新手头痛,也在Symbian高手感到汗颜。
相较于Symbian的描述符来说,Qt中对于Unicode、UTF-8甚至其他编码格式的字符应用可算是大慰人心了。从整体上来说,主要分了两个大块:Unicode in Qt和Rich Text Processing。而这篇文章主要关注于Unicode in Qt中。
Unicode in Qt可以很简单,从16位的QString到8位的QByteArray,Symbian中复杂的描述符问题就能够解决。当然,QByteArray不仅可以用作UTF-8的编码,Unicode的、二进制的、Ascii的都可以。如果要用到C风格的字符串,Unicode in Qt也提供了很好的支持。
从Symbian到Qt再到C风格,刚接触的人可能面对大量的API却不知道该怎样去调用,这里列几个比较常规的用法:
1. QString到const char*: QString::toLocal8Bit()::constData()
2. 一系列的toXXX() API
3. QByteArray一般可用作2进制文件读取或者网络数据存储
4. Qt中一些类中会用到const char*或者QString的参数,如果可以选,最好用QString的,比如像QPixmap
5. Symbian中描述符操作也相对复杂,改用Qt的话,只要知道arg、append用法就可以了
6. 对于国际化,经常要用到的是QTextCodec类