• 字符集xxx



    总览

    unicode是字符集,utf-8是编码规则
    其他的字符集,比如ASCII,GB2312,GBK,编码规则都直接使用字符对应的码位

    字符集合有 :ASCII 、GBK2312 、GBK 、GBK18030、unicode
    最初始ASCII,然后最多128位,也就7位。
    但是存不下汉字啊。
    然后汉字出现了新的字符集 GBK2312,而GBK存的更多而已,GBK18030是也包含了少数民族的。他们都是向下兼容的(比如GBK2312就可以表示ASCII码了)。最后ISO组织为了统一,推出了UNICODE编码


    GBK2312

    GBK2312是分区管理的,分了94区,每个区94个汉字。
    比如侃,它的码位就是5789(57是分区,8 和9是分区里面的位置)。那码位如何存在计算机里面呢?
    将57和89转为16进制,分别加上0XA0,得到0xD9 和 0XA9就可以了,最终就是D9A9了,二进制就是1101100110101001,一共16位,占两个字节。
    (1 KB = 1024B =1024Bite= 1024字节=1024*8位)
    为什么加上0XA0,是因为有个规范ECMA-35
    ECMA-35已经被采纳为ISO 2022标准,GB2312 就是遵循这个标准来制定的。对于 ASCII 码,大家应该都很熟悉,ASCII 码是7位编码,0x00-0x1F (0-31) 是控制字符,0x20-0x7F (32-127) 是图形字符。基于 ASCII 码的标准,ISO 2022 制定了8位的标准:1. 0x00 - 0x1f(0-31) 保留给 C0 控制块2. 0x20 - 0x7f(32-127) 保留给 G0 图形块(包括空格和 DEL)3. 0x80 - 0x9f(128-159) 分配给 C1 控制块4. 0xa0 - 0xff(160-255) 分配给 G1、G2 和 G3 图形块,用转义序列切换GB2312 是双字节编码,为了与 ASCII 码区分开,字节的第8位必须是1,所以GB2312是8位编码。所以至少要从 0x80(128, 1000 0000) 开始吧,但是根据上面的规定,0x80 - 0x9f 要留给控制块,所以只能从 0xA0 开始咯。那为什么 GB2312 编码不是从 0xA0 开始,而是 0xA1 开始呢? 因为 0xA0 正好是图形块的空格,所以就从 0xA1 编码,这就是 0xA0 的由来。
    (来自https://www.zhihu.com/question/21918229/answer/246782037)

    GBK 编码

    为了再多一点汉字,有了GBK编码集。
    它不在两个16进制位都大于127了(因为加了A0就是160以上了),只需要最高位大于127用于与ASCII码区分就可以了。

    unicode编码

    后面发现,中国有自己的字符集,那我日本、哈萨克斯坦…是不是也有自己的字符集呢?
    为了统一,ISO提出了Unicode编码集。

    为了统一,就使用了utf-8编码规则。

    实际应用:转UTF-8

    // 哈的unicode码元:54c8,二进制是 0101 0100 1100 1000
    // 啊的unicode码元554a,二进制是 0101 0101 0100 1010
    // 按照UTF-8的模板
    // 1110xxxx 10xxxxxx 10xxxxxx
    // 哈转换为11100101 10010011 10001000,16进制就是E59388
    // 啊抓换为11100101 10010101 10001010,16进制就是E5958A
    String aa = new String(“哈啊”);
    System.out.println(URLEncoder.encode(aa, “UTF-8”));在这里插入图片描述

    比如有的接口,它是get请求,所以需要对其入参进行UTF-8转码。
    一个常见的Java API是

    URLEncoder.encode
    
    • 1

    注意它有一个bug,就是对空格转码成了+号。
    而实际上需要转码成%20

  • 相关阅读:
    Spring进阶(二):AOP
    bellman ford
    制作一个简单HTML电影网页设计(HTML+CSS)
    Selenium—入门+案例
    大厂面试题:【SpringBoot篇面试题:1-5题】
    excel高级绘图技巧100讲(二十一)- Excel层叠柱形图
    Linux下向Github仓库推送
    无线通信网络
    【乐吾乐大屏可视化组态编辑器】使用手册
    SpringCache_概述、Cacheable、更新缓存、删除缓存、从0搭建缓存项目
  • 原文地址:https://blog.csdn.net/qq_43179428/article/details/132999446