几种字符编码的理解

对几种字符编码的理解:

大体描述一下:防止忘掉。

 

1.ASCII码

   这个不用多说,美国标准,最通用的编码。(0-127),使用到一个字节的低7位。

2.ISO-8859-1

   ISO为西欧语言中的字符制定的编码。使用全部的一个字节进行编码。与ASCII兼容。

3.ANSI

   这个根据不同的操作系统不同,理解为本地系统编码。(例如中文为GB2312,GBK,GB118030,日文为JIS。

   以GB118030为例(winxp应该是以GB118030作为内码)说明汉字显示原理:

   中文输入法根据拼音找到要输出的汉字,可以找到汉字的区位码,显示到屏幕上是转换为内码表示的,计算机

   根据内码计算出此汉字的区位码,得到字模点阵信息,通过操作系统调用写显存,把汉字输出到屏幕上。

    (汉字显示原理 属于本人理解,不敢确定如此)

4.unicode

    因为各种操作系统的编码不同,相同的字节串在不同的操作系统中会有不同的表现,例如会有乱码,

所以产生出unicode,它为每种语言中的每个字符设定了统一并且唯一的二进制字节编码,以满足跨语言、跨平台进行文本转换、处理的要求。这样一个unicode编码只对应一个字符。不会出现乱码的情形。

-------------摘自http://blog.csdn.net/fmddlmyy/archive/2005/05/04/372148.aspx

UCS有两种格式:UCS-2和UCS-4。顾名思义,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。下面让我们做一些简单的数学游戏:

UCS-2有2^16=65536个码位,UCS-4有2^31=2147483648个码位。

UCS-4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为256行 (rows),每行包含256个cells。当然同一行的cells只是最后一个字节不同,其余都相同。

group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP。

将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。

----------------------------------------------------------------------------------------------------------------------------------

5.utf8和utf16

utf应该是为unicode编码传输所做的实现。

网上有人说“unicode编码是一种编码标准,utf-8,utf-16应该是它的具体实现方法!”我同意。

utf-8 是以一个字节进行编码。编码算法比较简单。

 

UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:

UCS-2编码(16进制)UTF-8 字节流(二进制)
0000 - 007F0xxxxxxx
0080 - 07FF110xxxxx 10xxxxxx
0800 - FFFF1110xxxx 10xxxxxx 10xxxxxx

例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 110001 001001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。

 

 

utf-16是以两个字节进行编码。

在unicode编码的code point 的U+0000-----U+FFFF范围内(称为基本的多语言级别),是和ucs2对应的,

每个字符用16位表示。称为code unit。

在U+10000到U+10FFFF范围的,是以两个code unit表示的。

例如,‘水’的unicode的code point为6C34,UTF-16码值为6C34.

             ‘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值