一、Qt所支持的平台
Qt把它所支持的平台分两级,第一级是重点支持的,第二级次之
第一级平台:
Platform | Compilers |
---|---|
Linux (32 and 64-bit) | gcc 4.2 |
Microsoft Windows XP | gcc 4.4 (MinGW) (32-bit), MSVC 2003, 2005 (32 and 64-bit) |
Microsoft Windows Vista | MSVC 2005, 2008 |
Microsoft Windows Vista 64bit | MSVC 2008 |
Apple Mac OS X 10.5 "Leopard" x86_64 (Carbon, Cocoa 32 and 64bit) | As provided by Apple |
Embedded Linux QWS (ARM) | gcc (Codesourcery version) |
Windows CE 5.0 (ARMv4i, x86, MIPS) | MSVC 2005 WinCE 5.0 Standard (x86, pocket, smart, mipsii) |
Symbian (Symbian/S60 3.1, 3.2 and 5.0) | RVCT 2.2 [build 686 or later], WINSCW 3.2.5 [build 482 or later], GCCE (for applications) |
第二级平台:
Platform | Compilers |
---|---|
Windows XP, Vista | gcc 3.4.2 (MinGW) |
Windows 7 | MSVC 2008 |
Apple Mac OS X 10.6 "Snow Leopard" | As provided by Apple |
Apple Mac OS X 10.4 "Tiger" | As provided by Apple |
HPUXi 11.11 | aCC 3.57, gcc 3.4 |
HPUXi 11.23 | aCC 6.10 |
Solaris 10 UltraSparc | Sun Studio 12 |
AIX 6 | Power5 xlC 7 |
Microsoft Windows XP | Intel Compiler |
Linux | Intel Compiler |
Embedded Linux QWS (Mips, PowerPC) | gcc (Codesourcery version) |
Embedded Linux X11 (ARM) | gcc (Scratchbox) |
Windows CE 6.0 (ARMv4i, x86, MIPS) | MSVC 2008 WinCE 6.0 Professional |
二、qt应用程序的国际化
1、字符编码的基础知识
因为计算机只认识数字,当需要让计算机处理字符时,就需要在字符和数字之间建立一种映射,这就叫做字符编码。比如ascii码用数字0-127表示相应的字符。他们之间是一种映射关系。根据各个语系不同有很多不同的编码系统,就我们比较关系的有GB和unicode两个编码系统。GB是中国制定的包含汉字的一套系统,unicode是国际制定的一套包含所有世界上用的字符的编码系统。
国标编码系统:ascii-->gb2312-->GBK-->GB18030,他们是前向兼容的,同一个字符在所有标准中都是用同一数字表示,只是后面的标准包含更多字符。
unicode编码系统:ascii-->unicode,unicode编码系统应该从两个层面去理解,分别是编码方式和实现方式,第一层面:编码方式分两个编码规格,一种叫UCS-2(Universal Character Set),用两个字节表示所有字符,可以表示216个字符,另一种叫UCS-4,用四个字节表示,可以表示232个字符。第二层面:是基于上面的编码方式如何去具体实现,叫做实现方式,具体实现大体分三种UTF-8、UTF-16、UTF-32,UTF是UCS Transformation Format的缩写,可以翻译成Unicode字符集转换格式,其中以utf-8最常用,下面我们来看看utf-8的实现方式:
UTF-8以字节为单位对Unicode进行编码。从Unicode到UTF-8的编码方式如下:
Unicode编码(16进制) ║ UTF-8 字节流(二进制)
000000 - 00007F ║ 0xxxxxxx
000080 - 0007FF ║ 110xxxxx 10xxxxxx
000800 - 00FFFF ║ 1110xxxx 10xxxxxx 10xxxxxx
010000 - 10FFFF ║ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
UTF-8的特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是4个字节。从上表可以看出,4字节模板有21个x,即可以容纳21位二进制数字。Unicode的最大码位0x10FFFF也只有21位。
例1:“汉”字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。
例2:Unicode编码0x20C30在0x010000-0x10FFFF之间,使用用4字节模板了:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx。将0x20C30写成21位二进制数字(不足21位就在前面补0):0 0010 0000 1100 0011 0000,用这个比特流依次代替模板中的x,得到:11110000 10100000 10110000 10110000,即F0 A0 B0 B0。