国际化开发技术FAQ

本文详细探讨了国际化开发,涵盖字节、字符集编码的关系,包括GB2312、GBK、GB18030、BIG5字符集的介绍。讨论了Unicode、UTF-8、UTF-16、UTF-32编码以及BOM的概念,同时阐述了Windows对Unicode的支持,MFC程序的Unicode处理,以及MySQL的字符集设置和转换。还涉及了如何在不同编程环境中处理Unicode和多字节字符集的字符串操作。
摘要由CSDN通过智能技术生成

什么是国际化开发?

答:指应用程序能够支持不同的语言输入和显示,同时也能够自如的适应不同文化的习俗。

 

字节、字符、字符集和字符集编码的关系?

答:计算机底层处理的最小单位是字节(8 位二进制表示)。

字符是表示一个有意义的符号或文字。

字符集是由一组相关的字符所组成的集合。比如说德文字符集只与德文相关,中文字符集只与中文相关,不会互相包含。

字符集编码是解决字符在计算机中的编码问题。

 

如何将字符集进行分类?

答:字符集编码通常可以分为以下3 种:单字节编码、宽字符编码和多字节字符编码。

    按照c/c++ 习惯,还可以分为:ANSI 字符集(单个/0 字符结尾)和宽字符集。

 

什么是 gb2312 字符集?

答:由原中国国家标准总局发布,198151 日实施,是中国国家标准的简体中文字符集。它收录了汉字及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共7445 个图形字符。

 

什么是 gbk 字符集?

答:GBK 最初是由微软对GB2312 的扩展,也就是CP936 字码表 (Code Page 936) 的扩展(原来的CP936GB 2312-80 一模一样),最初出现于Windows 95 简体中文版中,由于Windows 产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意GBK 并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。虽然 GBK 收录了所有Unicode 1.1GB 13000.1-93 之中的汉字,但是编码方式与Unicode 1.1GB 13000.1-93 不同。仅仅是GB 2312GB 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

标点符号、希腊字母 及特殊符号,
包括在0xA259-0xA261 ,安放了双音节 度量衡 单位用字:-( 兙兛兞兝兡兣嗧瓩糎)-

0xA3C0-0xA3FE

保留。此区没有开放作造字区用。

0xA440-0xC67E

常用汉字,先按笔划 再按部首 排序。

0xC6A1-0xC8FE

保留给使用者自定义字元(造字区)

0xC940-0xF9D5

次常用汉字,亦是先按笔划再按部首排序。

0xF9D6-0xFEFE

保留给使用者自定义字元(造字区)

    如其他DBCS 字符集相同,普通ASCII (小于0x80 )采用一个字节表示,这与双字节的低字节部分有重叠。

    因为低位 字符 中包含了程序 shellscript 中,字串或命令常会用到的特殊字元,例如0x5C “/”0x7C “|” 等。「/ 」 在许多用途的字串中是当作转义符号又称为跳脱 字符 ,例如 /n (换行)、/r (归位)/ttab )、/// 本身符号)、/" (引号)等等。而 「| 」 在UNIX 作业系统中大多当作命令管线的使用,如 "ls -la | more" 等等。如果在字串中有这些特殊的转义字元,会被程序或编译器解释为特殊用途。但是因为是中文的原因,故无法正确解释为上面所述的行为,因此程式可能会忽略此转义符号或是中断执行。若此,就违反了使用者本来要当成中文字元一部份使用的本意。

    在常用字如「功」(0xA55C) 、「-()-(0xB35C) 、「盖」(0xBB5C) 、「育」(0xA87C) 中时常出现,造成了许多软体无法正确处理以Big5 编码的字串或文件。这个问题被戏谑性地人名化,称为「-( 许功盖)- 」或「-( 许盖功)- ( 这三个字都有这种问题)

    一般的解决方法,是额外增加“/” 的字元,因为“//” 会被解释为“/” ,所以 成功/ 因素 这个字串就能无误地被程式当作 成功因素 的字串来处理。 但是额外的困扰是,有些输出功能并不会把“/” 当作特殊字元看待,所以有些程式或网页就会错误地常常出现在「许功盖」这些字后面多了“/”

 

什么是 HKSCS 字符集?

答:HKSCS 是中国香港增补字符集,是以big5 为基础进行扩充的。增加了一些粤语方言字和地名等。

 

什么是 UTF-8 字符集?

答:UTF-88 位元 Universal Character Set Unicode Transformation Format )是一种针对 Unicode 的可变长度字符编码 。它可以用来表示 Unicode 标准中的任何字符,且其编码中的第一个字节 仍与 ASCII 相容,这使得原来处理 ASCII 字符的软件 无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件 网页 及其他储存 或传送文字的应用中,优先采用的编码。

 

什么是 UTF-16 字符集?

答: UTF-16 unicode 的缺省编码方式,不兼容ASCII 码,所有字符都是占用两个字节。存在大小端的问题,一般用于本地存储和显示。

 

什么是 UTF-32 字符集?

答: UTF-32 一般用于UCS-4 ,采用4 字节编码方式,目前很少用到。UTF-32UTF-16 一样存在大小端的问题。

什么是 BOM

答: Unicode 规范中推荐的标记字节顺序的方法是BOMBOM 不是“Bill Of Material”BOM 表,而是Byte Order MarkBOM 是一个有点小聪明的想法:

UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE” 的字符,它的编码是FEFF 。而FFFEUCS 中是不存在的字符,所以不应该出现在实际传输中。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 的文本文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值