什么是国际化开发?
答:指应用程序能够支持不同的语言输入和显示,同时也能够自如的适应不同文化的习俗。
字节、字符、字符集和字符集编码的关系?
答:计算机底层处理的最小单位是字节(8 位二进制表示)。
字符是表示一个有意义的符号或文字。
字符集是由一组相关的字符所组成的集合。比如说德文字符集只与德文相关,中文字符集只与中文相关,不会互相包含。
字符集编码是解决字符在计算机中的编码问题。
如何将字符集进行分类?
答:字符集编码通常可以分为以下3 种:单字节编码、宽字符编码和多字节字符编码。
按照c/c++ 习惯,还可以分为:ANSI 字符集(单个/0 字符结尾)和宽字符集。
什么是 gb2312 字符集?
答:由原中国国家标准总局发布,1981 年5 月1 日实施,是中国国家标准的简体中文字符集。它收录了汉字及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共7445 个图形字符。
什么是 gbk 字符集?
答:GBK 最初是由微软对GB2312 的扩展,也就是CP936 字码表 (Code Page 936) 的扩展(原来的CP936 和GB 2312-80 一模一样),最初出现于Windows 95 简体中文版中,由于Windows 产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意GBK 并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。虽然 GBK 收录了所有Unicode 1.1 及GB 13000.1-93 之中的汉字,但是编码方式与Unicode 1.1 及GB 13000.1-93 不同。仅仅是GB 2312 到GB 13000.1-93 之间的过渡方案。GBK 收录了21886 个符号,它分为汉字区和图形符号区。汉字区包括21003 个字符。
什么是 GB18030 字符集?
答: 2000 年的GB18030 取代了GBK1.0 的正式国家标准。该标准收录了27484 个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC 平台必须支持GB18030 ,对嵌入式产品暂不作要求。所以手机、MP3 一般只支持GB2312 。
什么是 BIG5 字符集?
答: 大五码(Big5 ),又称为五大码,是使用繁体 中文社群中最常用的电脑汉字字符集 标 准,共收录13,060 个中文字,其中有二字为重覆编码,Big5 属中文内码(中文码分为中文内码及中文交换码两类)。Big5 虽普及于台湾、香港与澳门 等繁体中文通行区,但长期以来并非当地的国家标准,而只是业界标准(de facto standard )。倚天中文系统、Windows 等主要系统的字符集都是以Big5 为基准,但厂商又各自增删,衍生成多种不同版本。
2003 年,Big5 被收录到台湾官方标准的附录当中,取得了较正式的地位。这个最新版本被称为Big5-2003 。
什么是 “ 许盖功 ”问题?如何解决?
答:Big5码 是双字节字符集,使用了双 字符 储存方法,以两个字节来安放一个字。第一个字节称为「高位字节」,第二个字节称为「低位字节」。“ 高位字节” 使用了0x81-0xFE ,“ 低位字节” 使用了0x40-0x7E ,及0xA1-0xFE 。
在Big5 的分区中:
0x8140-0xA0FE |
保留给使用者自定义字元(造字区) |
0xA140-0xA3BF |
标点符号、希腊字母 及特殊符号, |
0xA3C0-0xA3FE |
保留。此区没有开放作造字区用。 |
0xA440-0xC67E |
|
0xC6A1-0xC8FE |
保留给使用者自定义字元(造字区) |
0xC940-0xF9D5 |
次常用汉字,亦是先按笔划再按部首排序。 |
0xF9D6-0xFEFE |
保留给使用者自定义字元(造字区) |
如其他DBCS 字符集相同,普通ASCII (小于0x80 )采用一个字节表示,这与双字节的低字节部分有重叠。
因为低位 字符 中包含了程序 、shell 、script 中,字串或命令常会用到的特殊字元,例如0x5C “/” 、0x7C “|” 等。「/ 」 在许多用途的字串中是当作转义符号又称为跳脱 字符 ,例如 /n (换行)、/r (归位) 、/t (tab )、// (/ 本身符号)、/" (引号)等等。而 「| 」 在UNIX 作业系统中大多当作命令管线的使用,如 "ls -la | more" 等等。如果在字串中有这些特殊的转义字元,会被程序或编译器解释为特殊用途。但是因为是中文的原因,故无法正确解释为上面所述的行为,因此程式可能会忽略此转义符号或是中断执行。若此,就违反了使用者本来要当成中文字元一部份使用的本意。
在常用字如「功」(0xA55C) 、「-( 许)- 」(0xB35C) 、「盖」(0xBB5C) 、「育」(0xA87C) 中时常出现,造成了许多软体无法正确处理以Big5 编码的字串或文件。这个问题被戏谑性地人名化,称为「-( 许功盖)- 」或「-( 许盖功)- 」( 这三个字都有这种问题) 。
一般的解决方法,是额外增加“/” 的字元,因为“//” 会被解释为“/” ,所以“ 成功/ 因素” 这个字串就能无误地被程式当作“ 成功因素” 的字串来处理。 但是额外的困扰是,有些输出功能并不会把“/” 当作特殊字元看待,所以有些程式或网页就会错误地常常出现在「许功盖」这些字后面多了“/” 。
什么是 HKSCS 字符集?
答:HKSCS 是中国香港增补字符集,是以big5 为基础进行扩充的。增加了一些粤语方言字和地名等。
什么是 UTF-8 字符集?
答:UTF-8 (8 位元 Universal Character Set /Unicode Transformation Format )是一种针对 Unicode 的可变长度字符编码 。它可以用来表示 Unicode 标准中的任何字符,且其编码中的第一个字节 仍与 ASCII 相容,这使得原来处理 ASCII 字符的软件 无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件 、网页 及其他储存 或传送文字的应用中,优先采用的编码。
什么是 UTF-16 字符集?
答: UTF-16 是unicode 的缺省编码方式,不兼容ASCII 码,所有字符都是占用两个字节。存在大小端的问题,一般用于本地存储和显示。
什么是 UTF-32 字符集?
答: UTF-32 一般用于UCS-4 ,采用4 字节编码方式,目前很少用到。UTF-32 与UTF-16 一样存在大小端的问题。
什么是 BOM ?
答: Unicode 规范中推荐的标记字节顺序的方法是BOM 。BOM 不是“Bill Of Material” 的BOM 表,而是Byte Order Mark 。BOM 是一个有点小聪明的想法:
在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE” 的字符,它的编码是FEFF 。而FFFE 在UCS 中是不存在的字符,所以不应该出现在实际传输中。UCS 规范建议我们在传输字节流前,先传输 字符”ZERO WIDTH NO-BREAK SPACE” 。
这样如果接收者收到FEFF ,就表明这个字节流是Big-Endian 的;如果收到FFFE ,就表明这个字节流是Little-Endian 的。因此字符”ZERO WIDTH NO-BREAK SPACE” 又被称作BOM 。
UTF-8 不需要BOM 来表明字节顺序,但可以用BOM 来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE” 的UTF-8 编码是EF BB BF 。所以如果接收者收到以EF BB BF 开头的字节流,就知道这是UTF-8 编码了。
记事本、 UltraEdit 和 VIM 对 BOM 支持情况如何 ?
答:记事本可以自动识别带不带BOM 的文本文件。