zoukankan      html  css  js  c++  java
  • 几种常见的编码方式

    为什么要编码

      首先必须知道计算机是如何表示我们人类能够理解的符号的。这些符号也就是我们人类所使用的语言,由于人类语言太多,表示这些语言的符号太多,无法用计算机中一个基本的存储单元——字节(byte)来表示,因而必须要经过拆分或一些翻译工作,才能让计算机理解我们的语言。

    我们可以把计算机能够理解的语言假定为英语,其他语言要能够在计算机中使用,必须的经过一次翻译,把它翻译成英语。这个翻译的过程就是编码。

    所以编码的原因可以总结为以下几条。

    • 在计算机中存储信息的最小单元是一个字节,即8个bit,所以能够表示的字符范围是 0~255个。
    • 人类要表示的符号太多,无法用一个字节来完全表示。

      要解决这个矛盾,必须要有一个新的数据结构char ,而从 char 到 byte 必须编码。

    如何翻译

      各种语言需要交流,经过翻译是必要的,那又如何来翻译呢?在计算机中提供了多种翻译方式,常见的有 ASCII、ISO-88591、GB23112、GBK、UTF-8、UTF-8、UTF-16等。它们都可以被看作字典,,它们规定了转换的规则,按照这个规则就可以让计算机正确地表示我们的字符。

    在选择编码格式来存储汉字时,一般要考虑是存储空间还是编码的效率重要。

    1. ASCII 码 
      ASCII 码总共有128个,用1个字节的低七位表示,0~31 是控制字符如换行、回车、删除等,32~126 是打印字符,可以通过键盘输入并且能够显示出来。
    2. .ISO-8859-1 
      128个字符显然是不够用的,于是ISO组织在ASCII 码基础上又制定了一系列标准来拓展 ASCII 编码,它们是ISO-8859-1 至 ISO-8859-15,其中 ISO-8859-1 涵盖了大多数西欧语言字符,所以应用的最广泛。ISO-8859-1 仍然是单字节编码,它总共能表示 256 个字符。
    3. GB2312 
      GB2312 的全称是 《信息技术 中文编码字符集》,它是双字节编码,总的编码范围是 A1~F7,其中A1 ~ A9 是符号区,总共包含682个字符; B0~F7 是汉字区,包含6763个汉字。
    4. GBK 
      全称是《汉字内码扩展规范》,它的出现是为了拓展 GB2312 ,并加入更多的汉字。它的编码是和GB2312 兼容的,也就是说用GB2312 编码的汉字可以用GBK 来解码,并且不会有乱码。
    5. UTF-16 
      说到UTF 必须提到 Unicode ,ISO 试图创建一个全新的超语言字典,世界上所有的语言都可以通过这个字典来相互翻译。UTF-16 具体定义了Unicode 在计算中的存取方法。UTF-16 用两个字节来表示 Unicode 的转化格式,采用定长的表示方法,即不论什么字符都可以用两个字节表示。
    6. UTF-8 
      UTF-16 存在存储空间浪费。UTF-8 采用了一种变长技术,每个编码区域有不同的字码长度。不同类型的字符可以由1~6 个字节组成。如果是一个字节,最高位为0,则表示这是 1 个 ASCII 字符,可见,所有ASCII 编码已经是UTF-8了。

    字符集进行统计和分类:

    语言
    字符集
    正式名称
    英语、西欧语
    ASCII,ISO-8859-1
    MBCS 多字节
    简体中文
    GB2312
    MBCS 多字节
    繁体中文
    BIG5
    MBCS 多字节
    简繁中文
    GBK
    MBCS 多字节
    中文、日文及朝鲜语
    GB18030
    MBCS 多字节
    各国语言
    UNICODE,UCS
    DBCS 宽字节

     

     

     

     

     

    转自:

    文字:https://blog.csdn.net/ai_xao/article/details/79051534

    表格:https://www.cnblogs.com/happyday56/p/4135845.html

    各种编码详解:

    https://www.cnblogs.com/happyday56/p/4135845.html

    https://blog.csdn.net/LVXIANGAN/article/details/8151670

    长得丑就应该多读书。我爱学习,只爱学习,最爱学习!
  • 相关阅读:
    关于jar包的创建及引用相关问题
    关于Android系统一次能创建多大的Bitmap?
    Android开发导入第三方Jar包
    Javascript操作表格
    installanywhere 打包j2ee的方法II(转)
    C#网页自动登录和提交POST信息的多种方法
    JavaScript手册javascript语法javascript函数
    javascript 禁止复制网页
    [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式(转)
    android消息处理系统原理
  • 原文地址:https://www.cnblogs.com/xc-718/p/9619331.html
Copyright © 2011-2022 走看看