• 字符编码详解


    字符编码

    计算机中的存储是以字节为单位的,能反映的也仅仅是数字而已,为了能够用数字将文字信息反映出来人们设计出了各种字符编码表,将数字与文字对应。

    一、ASCI编码

    1.原始Ascii编码

    原始ASCI使用1到127(0X00~0X7F)来对应常用的一些字母等文本,127到255则是扩展到一些不常用的类似于=号这种内容。

    但原始ASCI所支持的字符仅仅能够反映英文国家的使用场景。

    2.ASCI扩展编码

    对于某些地区是无法用原始ASCI编码来反映当地的语言的,所以就有了ASCI扩展编码的这种形式。

    扩展ASIC编码将不常用的127到255的(0x80~0xFF)位置采用两个数字对应一个文字的方式

    如:可能128和129代表一个中,129和130代表一个国

    呢么中国对应的编码就是:0x 8081 8182

    例如国内常用的GBK、GB2312和台湾的big5等编码方式都是采取的此类

    但是这种编码方式有一个问题,就是他占用了ASCI表的127到255的位置并且不同的地区这部分的编码均不一样,呢么国内的中文文件发到国外采用了不同的编码去读取则会出现乱码

    二、Unicode编码

    Unicode编码就是为了解决ASCii扩展码在不同地区的实现下解码后对应不同的文字这个问题

    Unicode编码将全世界常用的符合都构建到一个表中,这个表的范围是:0x10 FF FF到0
    Unicode仅仅提供了一个表,他并没有对存储做过多的要求,而下面所说的utf-8和utf-16以及现在的utf-32则是对Unicode编码存储方式的不同实现

    1.unicode编码实现(utf-8)

    utf-8较之utf-16在存储上更为复杂,但是所占空间是更小的,这也是网络传输大多为utf-8的格式的原因

    存储规则:

    如果目标符合在Unicode中为:0到00007F则会被编码为:0xxx xxxx

    如果目标符合在Unicode中为:80到00007FF则会被编码为:110xx xxx 10xx xxxx

    如果目标符合在Unicode中为:800到00FFFF则会被编码为:1110 xxxx 10xx xxxx 10xx xxxx

    如果目标符合在Unicode中为:10000到10FFFF则会被编码为:1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx

    2.unicode编码实现(utf-16)

    utf-16名如其意,就是以两个byte为单位进行存储。

    举例:如果说在Unicode编码中 中对应0x10 61 62

    呢么采用utf-16存储在文件中的byte就是 0x 0010 6162

  • 相关阅读:
    场效应管器件
    一小时快速上手win10 docker 、vscode、MobaXterm、git协作开发
    【蓝桥杯】蓝桥杯双周赛第二场ABCD题
    vulfocus——struts2-cve_2017_9791
    设计模式(二)| 结构型模式(适配器模式、代理模式等)
    暑期JAVA学习(44)注解
    【面试算法——动态规划 20】最长公共子序列&& 不相交的线
    Python循环语句(一)
    【LeetCode每日一题:1779. 找到最近的有相同 X 或 Y 坐标的点~~~模拟遍历+曼哈顿距离】
    西米支付”:在游戏SDK中,提供了哪些支付渠道?SDK的用处?
  • 原文地址:https://blog.csdn.net/qq_43147121/article/details/127968159