以下任何言论都完全是个人的理解,如有雷同纯属巧合,如有错误,希望大家多多指出,共同学习!谢谢!

笔者是一个理解能力偏慢、稍钻牛角尖的程序员,什么东西都要从最基础理解起,一步一步向上理解,因此讲述时也是这样,讲述的也比较通俗,都是按照个人的理解来讲述的,也请大家少安毋躁。

在计算机中无论任何数据的传输、存储、持久化,都是以二进制的形式体现的。

那么当我存一个字符的时候,计算机需要持久化到硬盘,或者保存在内存中。

这个时候保存在内存、硬盘的数据显然也是二进制的。

那么当我需要从硬盘、内存中取出这些字符,再显示的时候,为什么二进制会变成了字符呢?

这就是码表存在的意义。

码表其实就是一个字符和其对应的二进制相互映射的一张表。

这张表中规定了字符和二进制的映射关系。

计算机存储字符时将字符查询码表,然后存储对应的二进制。

计算机取出字符时将二进制查询码表,然后转换成对应的字符显示。

大致可以这样理解。

By the way

不同的码表所容纳的字符映射也是不同的。

在有些码表中一个字符占用1个字节,1个字节能表示的范围是-128到127,总共为256。所以能容纳256个字符映射。

而有的码表中一个字符占用2个,甚至3个字节,因此能容纳的字符映射也更多。

下面笔者按照自己的理解详细讲述一下不同的码表。

常见的码表:

ASCII:

美国码表,码表中只有英文大小写字母、数字、美式标点符号等。每个字符占用1个字节,所有字符映射的二进制都为正数,因此有128个字符映射关系。

GB2312:

兼容ASCII码表,并加入了中文字符,码表中包含英文大小写字母、数字、美式标点符号占一个字节,中文占两个字节,中文映射的二进制都是负数,因此有128× 128 = 16384个字符映射关系。

GBK/GB18030:

兼容GB2312码表,英文大小写字母、数字、美式标点符号,占一个字节。中文占两个字节,第一个字节为负数,第二个字节为正数和负数,因为有128× 256 = 32768个字符映射关系。

Unicode码表:

国际码表,包含各国大多数常用字符,没个字符都占2个字节,因此有65536个字符映射关系。Java语言使用的就是Unicode码表。

UTF-8码表:(是Unicode编码表的一种实现形式)

同样是国际码表,但英文占一个字节,中文占3个字节。

实际存储中看看具体的影响:

转载于:https://www.cnblogs.com/csguo/p/7402034.html

码表的理解(ASCII,GBK,Unicode,UTF-8等)。相关推荐

  1. 个人对码表的理解(ASCII,GBK,Unicode,UTF-8等)。

    以下任何言论都完全是个人的理解,如有雷同纯属巧合,如有错误,希望大家多多指出,共同学习!谢谢! 笔者是一个理解能力偏慢.稍钻牛角尖的程序员,什么东西都要从最基础理解起,一步一步向上理解,因此讲述时也是 ...

  2. ASCII,GBK,Unicode(UTF-32/UTF-8),乱码,ANSI详解

    前言 总目录 日常开发过程中,经常会遇到ASCII,GBK,Unicode(UTF-32/UTF-8)等名词,对于这些概念是不是有点傻傻分不清呢?相信看下本文,你会有自己的理解. 一.ASCII码 1 ...

  3. ASCII GBK Unicode 等各种字符编码

    ASCII 码(仅适用全英文字符): 编码规则:总共0~127共128个字符编码:占用一个字节的后面7位,最前面的一位统一规定为0 0-31及127(共33个)是控制字符或通信专用字符(不可显示字符) ...

  4. 计算机编码种类(ASCII/gbk/unicode/utf-8)

    计算机编码的作用 主要是解决将文字转换为二进制码的过程: bytes–>encode–> str --> decode --> bytes ASCII 只适合英文编码,用一个字 ...

  5. 常见的字符编码表讲解(ASCII、Unicode、UTF-8)

    觉得这篇文章对你有帮助的话,就留个赞赞吧~

  6. 彻底搞懂编码ASCII、Unicode、GBK 和 UTF8 、UTF-16、UTF-32编码方式(非常经典)

    GBK,ISO-8859-1,GB2312的本质区别 编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标 ...

  7. ASCII、Unicode、GBK、UTF-8之间的关系

    一.ASCII编码 目录 一.ASCII编码 二.GBK编码 三.Unicode编码 四.UTF-8编码 五.Unicode和UTF-8之间的转换 六.Little endian 和 Big endi ...

  8. 深入理解字符编码(ASCII、Unicode、UTF-8、UTF-16、UTF-32)

    大家都知道,程序中的所有信息都是以二进制的形式存储在计算机的底层的,也就是说我们在代码中定义的一个 char 字符或者一个 int 整数都会被转换成二进制码储存起来,这个过程可以被称为编码,而将计算机 ...

  9. ASCII,Unicode,UTF-8,GB2312一些关于编码的理解

    2019独角兽企业重金招聘Python工程师标准>>> 字符编码:ASCII,Unicode,UTF-8,GB2312 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件 ...

最新文章

  1. wordpress自适应表格_给WordPress添加自适应表格 让表格自适应屏幕
  2. redis配置开机启动
  3. docker 查看容器占用磁盘大小
  4. The assembly for System.Buffers could not be loaded;无法加载System.Buffers的程序集
  5. Oracle数据库DECODE函数的使用.
  6. vuecli3+webpack4优化实践(删除console.log和配置dllPlugin)
  7. oracle set autocommit,Oracle Sqlplus SET AUTOCOMMIT
  8. Apache-ab 接口性能测试
  9. java疯狂讲义精粹第2版_疯狂Java讲义精粹(第2版)(含CD光盘1张)
  10. js实现图片裁剪效果
  11. 成功上岸国科大研究生!
  12. python网络图片下载---跟我一起爬王者农药皮肤吧
  13. 【HEVC代码阅读】帧内预测
  14. 利用Java简单的实现围棋小游戏
  15. 温柔的声音,温暖的旋律:碧娜《再回到从前》
  16. mob短信验证码SMSSDK的错误代码
  17. 高薪程序员面试题精讲系列101之如何对数据库进行优化(下)?
  18. 自学python数据需要多久_零基础自学Python要多久?需要怎样的基础和准备
  19. 摩尔定律对IT未来发展的影响
  20. python 扒数据_不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据

热门文章

  1. 50mm定焦,f1.8与1.4有什么不同?
  2. 小米MIX4曝光,颜值真不错
  3. 乔致庸晚年有白银一千万两,相当于现在多少钱?
  4. 人是不是不应该善良?
  5. 如何顺势用优势找到机会赚钱?
  6. 怎样判断一个领导是否值得追随呢?
  7. 回收二手木料,是一个利润比较大的项目
  8. C++低级程序设计支持规则
  9. Now that half a year has passed
  10. 具有Ubuntu和Azure Data Studio的Linux上SQL Server 2019