C语言编程必备知识之一------------------汉字编码

 

 

C语言编程,基本的类型有字符型,整数型,浮点型。这些类型是我们对事物进行描述所必不可少的东西。即基础,又非常核心。所以必须掌握。

一、            字符集

ASCII

GB2312—>GBK-àGB18030

BIG5

ISO8859-1(欧洲)

S-JIS(日文编码)

Unified Hangul Code(韩文编码)

Unicode

ISO10646(UCS)

ASCII兼容的编码有

GBKBIG5ISO8859-1S-JISunified Hangul Code

这些编码都是ASCII的扩展编码,大部分为二字节编码。而且个个编码间互不兼容。之兼容ASCII。统称为ANSI

ISO10646也叫UCS,和Unicode是同一个东西,但由于组织不同所以叫法也不同。但是其编码是完全相同的。为了简便其间,可以统称为Unicode

UTFUnicode的存储方式有UTF-16UTF-32UTF-8

 

二、            文件存储

Windows的记事本中,文本有三种保存方式:

1.      ANSI

也就是ASCII+GBK

2.      UnicodeUTF-16

UTF-16方式存储Unicode编码。

UTF-16编码与Unicode编码完全一样。

UTF-16是一种定长存储方式。

对于UTF16字节序问题,可以在开头加入BOM

            BigEndian的话,FFFE

            LittleEndian的话,FEFF

3.      UTF-8

UTF-8方式存储Unicode编码。

UTF-8编码与Unicode编码不完全一样。但是由Unicode推出。

UTF-8是一种变长编码存储方式。

Unicode编码定长存储-----------UTF16

Unicode编码变长存储-----------UTF8

总结:

       Unicode是字符的编码,UTFUnicode编码的存储方式。

       ANSI编码就是兼容ASCII的各种编码。其特点是ASCII码位不变,高位扩展。相互高位扩展之间(如GBKBIG5)之间不兼容。

       因此文字编码世界只有ANSIUnicode在竞争了。

三、            ANSIUnicode

1.ANSI可以存储

ASCIIGBK

ASCIIISO8859-1,(欧洲)

ASCIIBIG5

ASCIIJP编码(日文)

ASCIIKS编码(韩文)

  其实大家可以发现,ANSI方式下,ASCII与本地码(GBK等)之间兼容,在使用上和存储上都完全没有问题。

问题只发生在 两套扩展集之间。即GBKJP编码之间。由于都是高位扩展自ASCII,所以其编码区域难免出现重叠。就是同一个编码在中国和日本分别对应不同的字。

日本人给中国人发Email就会出现问题,由于编码不同,同一个Email,在JP编码和GBK编码中对应不同的字。所以理解就会出现问题--------乱码。

也就是ANSI编码会在不同语种间发生乱码问题。特别是不同语种间的WebEmailftp等等文字信息交换。

2Unicode可以存储

    世界上所有的文字,各种文字使用16位统一编码。

在世界任何地方,同一个符号的16位编码都相同。因此同一个编码,在世界各地不会有不同的解释,也就是Unicode具有唯一性。这就是统一编码的好处。

才用Unicode后,同一张网页,在世界任何地方都会有相同的解释,对应唯一的字符。这样中国人就可以自由的浏览日文网站,韩文网站,越南网站,欧洲网站了,只要它采用的是Unicode

所以在Web时代Unicode的作用是不可替代的。

总结:

    ANSIUnicode的区别简单的例子

    你的Web只允许中国人和美国人看,OK,用ANSI

    你的Web允许世界上任何人看,OK,用Unicode

Unicode与UTF的关系

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值