到底什么是字符编码

我之前老是有这种感觉, 就是明明已经看过很多关于字符编码的资料了, 感觉字符编码相关的知识点不难理解, 觉得自己已经把字符编码给弄懂了, 但当别人问我到底什么是字符编码, Unicode是什么啊, UTF-8又是什么的时候, 我又结结巴巴的说不清楚, 或者只能给个含糊不清的回答, 老是把相关的知识点给弄混. 所以这篇博客, 就是要把字符编码给真正的搞懂, 把相关的知识点梳理清楚.

到底什么是字! 符! 编! 码?!!!

我们所理解的"字符编码(名词)"包含两个部分:
    1.字符集
    2.编码规则

字符集, 做了什么事情呢? 其实就是给一个字符指定一个数字编号,
就像我们每个人都会有一个身份证号一样, 通过一个身份证号可以对应某一个人,
那我们通过数字编号, 就可以对应到某个具体的字符了
所以, 简单来说, 字符集就相当于一个大的数据库, 这个数据库中包含了两个字段(列): 字符, 和字符对应的编号
+------+----------+
| 字符 |    编号   |
+------+----------+
|   a  |     97   |
+------+----------+
|   b  |     98   |
+------+----------+

编码规则, 就是如何对"字符的编号"进行编码的一种规则, 比如我们现在要将字母 "a" 保存到硬盘中,
"a"对应的编号是97, 所以我们只要保存97就行了, 按照ASCII的编码规则, 使用8位二进制数(第1位二进制为0)来进行编码,
97在经过编码后的存储格式就为01100001

为什么要有字符编码?

归根结底, 计算机只认识0和1(二进制), 不是0和1的数字, 我们可以通过位数转换, 转换成二进制
那对于字符, 计算机要怎么识别呢?
将每个字符都指定一个数字编号(字符集), 再将数字编号转为二进制(编码规则), 这样计算机就能识别了

Unicode与UTF-8

首先, Unicode也是包含两个部分: 字符集+编码规则
你可以将Unicode字符集理解为是包含了全世界大多数语言字符与字符编号的超大数据库
而UTF-8就是Unicode的一种编码规则, 除了UTF-8, 还有UTF-16、UTF-32等编码规则
    UTF-32: 不管你的编号是多少, 即使是1, 我都给你转为用32位的二进制: 00000000 00000000 00000000 00000001
    UTF-16: 能转为16位就转为16位, 16位不够就转为32位
    UTF-8: 能转为8位就转8位, 8位不够就转16位,  16位不够就转24位, 24位不够转32位

注:

只是对相关概念做了简单阐述, 目的是理清字符编码的相关知识点, 如果对字符编码有深入了解的需求, 请自行查阅相关资料

原文地址:https://www.cnblogs.com/bigb/p/12114685.html

时间: 2024-09-27 22:07:16

到底什么是字符编码的相关文章

<转>字符编码笔记:ASCII,Unicode和UTF-8

本文转自:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚. 下面就是我的笔记,主要用来整理自己的思路.但是,我尽量试图写得通俗易懂,希望能对其他朋友有用.毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识. 1. ASC

字符编码笔记:ASCII,Unicode和UTF-8(转载)

作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚. 下面就是我的笔记,主要用来整理自己的思路.但是,我尽量试图写得通俗易懂,希望能对其他朋友有用.毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识. 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)

字符编码笔记:ASCII,Unicode和UTF-8

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去.他们看到这样是好的,于是它们就这机器称为"计算机". 开始计算机只在美国用.八位的字节一共可以组合出256(2的8次方)种不同的状态. 他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端.打印机遇上约

3、字符编码

原文地址:http://www.admin10000.com/document/5643.html#rd?sukey=89ec730162696fd884fd95184c561ff07557a3b0ec4b6c8050e0c88356788823df5aef583239cd3a35d88d44d701ff97 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚. 下面就是我的笔记,主要用来

【白话篇】10分钟搞懂字符编码

如上图所示为常见的,让人看了头晕的 几个种编码. 看懂下面几条规则,你就明白他们的关系了. [1]有些人说,GBK严格来说是字符集,而utf-8则是编码,这种区分已经相当模糊了,他们都是"字节到字符的映射关系",所以下面都用编码来说吧. [2] ISO-8859-1 这种编码是单字节编码,衍生于ASCII,表示范围0-255,只要按照ASCII的规则设计的编码,不管是几字节的,都可以和ISO-8859-1兼容. [3]比如说,GBK编码(双字节)能转化成ISO-8859-1编码,是因为

字符编码 ASCII,Unicode 和 UTF-8 概念扫盲

今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚. 下面就是我的笔记,主要用来整理自己的思路.但是,我尽量试图写得通俗易懂,希望能对其他朋友有用.毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识. 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出2

12.30 字符集和字符编码(Charset & Encoding)(转载)

——每个软件开发人员应该无条件掌握的知识! ——Unicode伟大的创想! 相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"б?ЯАзЪСЯ"."?????????"?还记得HTTP中的Accept-Charset.Accept-Encoding.Accept-Language.Content-Encoding.Content-Language等消息头字段?这些就是接下来我们要探讨的. 目录: 1.基础知识 2.常用字符集和字符编码 2.1. ASCII字符

彻底搞懂字符编码(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)[转]

最近有一些朋友常问我一些乱码的问题,和他们交流过程中,发现这个编码的相关知识还真是杂乱不堪,不少人对一些知识理解似乎也有些偏差,网上百度, google的内容,也有不少以讹传讹,根本就是错误的(例如说 unicode编码是两个字节),各种软件让你选择编码的时候,常常是很长的一个选单,让用户不知道该如何选.基于这样的问题,我就写下我的理解吧,一方面帮助一些需要帮助的人纠正认识,一方面作为自己以后备查的资料. 1. ASCII(American Standard Code for Informati

python的 随手记----字符编码与转码

一.前提 那么到底什么是编码呢? //ASCII 记住一句话:计算机中的所有数据,不论是文字.图片.视频.还是音频文件,本质上最终都是按照类似 01010101 的二进制存储的. 再说简单点,计算机只懂二进制数字! 所以,目的明确了:如何将我们能识别的符号唯一的与一组二进制数字对应上?于是美利坚的同志想到通过一个电平的高低状态来代指0或1, 八个电平做为一组就可以表示出 256种不同状态,每种状态就唯一对应一个字符,比如A--->00010001,而英文只有26个字符,算上一些特殊字符和数字,1