常用字符集

    xiaoxiao2022-07-02  224

    常用字符集

    ASCII字符集ISO 8859-1字符集GB2312字符集GBK字符集utf8字符集

    ASCII字符集

    共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码,我们看一些字符的编码方式:

    ‘L’ -> 01001100(十六进制:0x4C,十进制:76)‘M’ -> 01001101(十六进制:0x4D,十进制:77)

    ISO 8859-1字符集

    共收录256个字符,是在ASCII字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以使用1个字节来进行编码。这个字符集也有一个别名latin1。

    GB2312字符集

    收录了汉字以及拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母。其中收录汉字6763个,其他文字符号682个。同时这种字符集又兼容ASCII字符集,所以在编码方式上显得有些奇怪:

    如果该字符在ASCII字符集中,则采用1字节编码否则采用2字节编码

    这种表示一个字符需要的字节数可能不同的编码方式称为变长编码方式。比方说字符串’爱u’,其中’爱’需要用2个字节进行编码,编码后的十六进制表示为0xCED2,'u’需要用1个字节进行编码,编码后的十六进制表示为0x75,所以拼合起来就是0xCED275。

    我们怎么区分某个字节代表一个单独的字符还是代表某个字符的一部分呢?别忘了ASCII字符集只收录128个字符,使用0~127就可以表示全部字符,所以如果某个字节是在0~127之内的,就意味着一个字节代表一个单独的字符,否则就是两个字节代表一个单独的字符

    GBK字符集

    GBK字符集只是在收录字符范围上对GB2312字符集作了扩充,编码方式上兼容GB2312。

    utf8字符集

    收录地球上能想到的所有字符,而且还在不断扩充。这种字符集兼容ASCII字符集,采用变长编码方式,编码一个字符需要使用1~4个字节,比方说这样:

    ‘L’ -> 01001100(十六进制:0x4C)‘啊’ -> 111001011001010110001010(十六进制:0xE5958A)

    其实准确的说,utf8只是Unicode字符集的一种编码方案,Unicode字符集可以采用utf8、utf16、utf32这几种编码方案,utf8使用1~4个字节编码一个字符,utf16使用2个或4个字节编码一个字符,utf32使用4个字节编码一个字符

    对于同一个字符,不同字符集也可能有不同的编码方式。比如对于汉字’我’来说,ASCII字符集中根本没有收录这个字符,utf8和gb2312字符集对汉字我的编码方式如下:

    utf8编码:111001101000100010010001 (3个字节,十六进制表示是:0xE68891)b2312编码:1100111011010010 (2个字节,十六进制表示是:0xCED2)
    最新回复(0)