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

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

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

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

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

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

这就是码表存在的意义。

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

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

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

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

大致可以这样理解。

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个字节。

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

码表的理解(ASCII,GBK,Unicode,UTF-8等)。的更多相关文章

  1. 字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8

    原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享. 1.引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料. 这个问题比我想象 ...

  2. 编码 ASCII, GBK, Unicode+utf-8

    0. 1.参考 网页编码就是那点事 阮一峰 字符编码笔记:ASCII,Unicode 和 UTF-8 2.总结 美国 ASCII 码 发音: /ˈæski/ :128个字符,只占用了一个字节的后面7位 ...

  3. (转载)字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8

  4. 字符编解码的故事(ASCII,GBK,Unicode,Utf-8区别)

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节". 再后来,他们又做了一 ...

  5. 理解ASCII,Unicode和UTF-8关系

    前言:之前一直就好奇这个问题,但是一直没解决,今天我总算明白了,感谢大佬们的科普 转自:https://blog.csdn.net/Deft_MKJing/article/details/794604 ...

  6. ASCII、Unicode、utf-8、utf-16、utf-32

    理解ASCII.Unicode.utf-8.utf-16.utf-32 目录 理解ASCII.Unicode.utf-8.utf-16.utf-32编码与解码字符集字符编码ASCIIUnicodeUT ...

  7. 第48篇 字符编码探密--ASCII,UTF8,GBK,Unicode

    原文地址:http://blog.laofu.online/2017/08/22/encode-string/ ASCII 的由来 在计算机的“原始社会”,有人想把日常的使用的语言使用计算机来表示, ...

  8. ASCII、Unicode、UTF-8、UTF-16、GBK、GB2312、ANSI等编码方式简析

    ASCII.Unicode.UTF-8.UTF-16.GBK.GB2312.ANSI等编码方式简析 序言 从各种字节编码方法中,能看到那个计算机发展的洪荒时期的影子. ASCII ASCII码有标准A ...

  9. ASCII、Unicode、GBK和UTF-8字符编码的区别联系(转载)

    ASCII.Unicode.GBK和UTF-8字符编码的区别联系 转载自:http://dengo.org/archives/901 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同 ...

随机推荐

  1. Centos 7 安装记录

    0.安装中选择最小安装 1.centos7安装图形界面 之前转载过一篇“centos6安装图形界面”的文章,地址见http://my.oschina.net/u/1169607/blog/335304 ...

  2. jenkins任务构建失败重试插件Naginator Plugin

    jenkins任务失败重新构建插件Naginator Plugin jenkins任务经常会因为一些偶然因素失败,这时重新构建一次就肯能成功:jenkins的Naginator Plugin插件可以重 ...

  3. .Net 数据缓存浅析

    目录 1场景出发 1.1数据请求 1.2优化改进 2缓存 3缓存进阶 3.1缓存清除 3.2有效性 3.3线程安全 4适用场景和优劣 4.1适用场景 4.2优劣 5结语 1场景出发 1.1数据请求 小 ...

  4. roadflow asp.net工作流自定义表单

    在roadflow表单设计器不能满足很复杂的业务需求的时候,可以采用自定义表单(即表单页面自己做). 自定义表单就是自己写一个页面,包含控制器视图,然后将这个页面挂到流程上进行审批. 自定义表单分为以 ...

  5. 开源应用框架BitAdminCore:更新日志20180817

    索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/coo ...

  6. 3XX重定向

        3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求 301 Moved Permanently  永久性重定向     该状态码表示请求的资源已经被分配了新的URI,以后应使用资源现 ...

  7. Mysql Insert Or Update语法例子

    有的时候会需要写一段insert的sql,如果主键存在,则update:如果主键不存在,则insert.Mysql中提供了这样的用法:ON DUPLICATE KEY UPDATE.下面就看看它是如何 ...

  8. logstash-out-mongodb实现elasticsearch到Mongodb的数据同步

    本文主要实现将Elasticsearch中的索引数据Index同步到Mongodb中的集合collection中. 0.前提 1)已经安装好源数据库:elasticsearch V2.X; 2)已经安 ...

  9. linux下安装nginx,centos安装nginx

    初学nginx,进行简单的安装和配置. 一.依赖 openssl-fips-2.0.9.tar.gz zlib-1.2.11.tar.gz pcre-8.01.tar.gz nginx-1.8.0.t ...

  10. 爬虫7:selenium

    1. 一个简单的使用例子 from selenium import webdriver from selenium.webdriver.common.by import By from seleniu ...