计算机的字符与编码集

文章目录

  • 前言
  • 一、字符编码集的历史
    • 1.ASCII码
    • 2.Extended ASCII码
    • 3.字符编码集的国际化
  • 二、中文编码集


前言

今天给大家介绍计算机的字符与编码集,分为两部分:字符编码集的历史中文编码集


一、字符编码集的历史

这部分包含三个板块内容:ASCII码Extended ASCII码字符编码集的国际化

1.ASCII码

对于ASCII码,相信接触过编程的人应该都不陌生,它是我们平时常用的一种编码方式,如大小写字母、数字、符号等等都是属于ASCII码里面的。ASCII码特点如下:

  • 使用7个bits就可以完全表示ASCII码
  • 包含95个可打印字符
  • 33个不可打印字符(包括控制字符)

我们可以做个简单运算:33 + 95 = 128 = 2^7,接下来我们通过下表来完整了解ASCII码的所有字符:

在这里插入图片描述

从表中我们可以看出,前面的32个控制字符加上表中最后一个共是33个控制字符,其他的都是我们常见的可打印字符。二战时期,计算机最早诞生于美、英国家,所以在计算机发展的早期,ASCII码就已经能满足相关国家和科学家的使用。

但随着计算机发展及普及,ASCII码逐渐无法满足需求。主要表现在:ASCII码里面,很多应用或者国家中的符号都无法表示。如数学符号 “÷ ≠ ≥ ≈ π” 等等一些字符ASCII码都无法表示。

这时候就想到了第一次对ASCII码进行扩充,7bits => 8bits,使用8个比特位代替原来的7比特,那么原来的 127 个字符就可以扩充为 256 个字符了,也就是可拓展的ASCII码:Extended ASCII码

2.Extended ASCII码

如下表所示,为扩展的那部分ASCII码:
在这里插入图片描述

从中可以看到,包含了常见数学运算符、带音标的欧洲字符、其他常用符、表格符等。使用了这个可拓展的ASCII码极大的补充了原来ASCII码所不能展示的内容,使得计算机所能表达的内容越来越丰富。

虽然在这里面,可拓展的ASCII码补充了原有ASCII码所不能表达的内容。但是随着计算机的进一步发展,越来越多的国家加入了使用计算机的行列当中,那么这个时候,对于计算机的字符与编码集的要求也越来越高,我们就需要了解字符编码集的国际化了。

3.字符编码集的国际化

对于字符编码集的国际化,有着如下的背景:

  • 欧洲、中亚、东亚、拉丁美洲国家的语言多样性
  • 语言体系不一样,不以有限字符组合的语言(如拿中文和英文做比较,对于英文来说所有单词都是由26个字母组成。但是中文就不一样了,除了偏旁部首外,每个字都是独立的,可以再组成不同词汇,也就是不以有限字符为组合)
  • 中国、韩国、日本等的语言最为复杂

在这种情况下,字符编码集的国际化就尤为重要了。在这里面,我们主要是了解中国的字符编码集,接下来就来到第二个大板块。

二、中文编码集

对于中文编码集,首先要介绍的是 GB2312,该编码集是在1980年发明出来,也是我国最早发明的编码集。它的全称是《信息交换用汉字编码字符集-------基本集》,简称 GB2312(国标2312)。这个编码集一共收录了 7445 个字符,其中包括 6763 个汉字和 682 个其它符号。

虽然这个编码集有比较完备的字符表示,但是也有一定的问题:不符合国际标准。因此,在1995年就推出了更完善的编码集:GBK,全称是《汉字内码扩展规范》。该编码集向下兼容GB2312,向上支持国际ISO标准。而且收录了 21003 个汉字,支持全部中日韩汉字。

上面介绍的 GB2313 和 GBK 都是比较完备的编码集,但是不管怎么完备,都只是本地化的编码。也就是说,这个编码在中国使用是没有问题的,但如果跨国使用就有问题。什么意思呢?举个例子:比如我们开发了一个中文网站,这时候外国友人访问了这个网站,如果他们本地没有安装 GBK 或者 GB2312 编码的话,这个网页在他们电脑里面去显示的话就是乱码的。

所以这个时候,我们不仅要有本地化的编码,还要有一个全球的规范。这个规范就是:Unicode 字符集,Unicode又称为:统一码、万国码、单一码,也就是说 Unicode 可以表达全世界所有的语言。它定义了世界通用的符号集,使用 UTF-* 实现了编码(如UTF-8、UTF-16)。其中UTF-8是最为通用的全球编码方式,它以字节为单位对Unicode进行编码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/104447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【通信系列 5 -- HTTPS 介绍】

文章目录 1.1 HTTPS链接网址1.1.1 HTTPS 产生背景1.1.2 HTTPS工作内容1.1.3 SSL/TLS1.1.4 TLS 的命名规范1.1.5 TLS 加密算法1.1.6 分组模式1.1.7 摘要算法1.1.8 非对称加密1.1.9 CA认证 1.2 openssl1.2.1 RSA 签名验签 1.1 HTTPS链接网址 HTTP 是一种 超文本传输协议(Hyperte…

DOCKER本地仓库

概述 随着docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker仓库的本地化应用。 试用了docker的本地仓库功能,简单易上手,记录下来以备后用。 环境 centos:CentOS release 7.0 (F…

CANoe创建仿真工程

CANoe创建仿真工程 写在前面仿真工程的创建创建工程添加CAN数据库添加系统变量创建面板创建网络节点为节点添加代码工程运行测试总结 写在前面 Canoe的安装不是特别方便,我是参加了松勤的培训课程,不仅需要安装软件还需要安装驱动,刚刚学习的…

【PWN · 栈迁移】[CISCN 2019东南]PWN2

一道非常典型、适合用作学习栈迁移的题目。 前言 当存在栈溢出但是溢出字符数并不多的情况下,可以尝试在别处构造rop链,通过栈迁移到目标内存区域,执行rop链。这里不讲栈迁移原理,仅是对题目的分析,适合对栈迁移有初步…

WPF中的多重绑定

MultiBinding 将会给后端传回一个数组, 其顺序为绑定的顺序. 例如: <DataGridMargin"10"AutoGenerateColumns"False"ItemsSource"{Binding Stu}"><DataGrid.Columns><DataGridTextColumn Binding"{Binding Id}" Header…

bash一行输入,多行回显demo脚本

效果图&#xff1a; 脚本&#xff1a; #!/bin/bash # 定义一个变量&#xff0c;用来存储输入的内容 input"" # 定义一个变量&#xff0c;用来存储输入的字符 char""# 为了让read能读到空格键 IFS_store$IFS IFS# 提示内容&#xff0c;在while循环中也有&a…

three.js入门 —— 实现第一个3D案例

前言&#xff1a; three.js入门&#xff0c;根据文档实现第一个3D案例 效果图&#xff1a; 代码实现&#xff1a; const scene new THREE.Scene();//创建一个长方体几何对象Geometryconst geometry new THREE.BoxGeometry(100, 100, 100);//创建一个网络基础材质的材质对象…

机器人革命:脑洞大开的前沿机器人技术!

原创 | 文 BFT机器人 01 由生物启发的多模式移动形态机器人 在一个不断运动的世界中&#xff0c;一种新开发的名为M4&#xff08;多模式移动形态机器人&#xff09;的机器人展示了在包括滚动、飞行和行走在内的八种不同运动模式之间切换的能力。这款机器人由加州理工学院自主…

SOLIDWORKS® 2024 新功能 - 3D CAD

1、 先前版本的兼容性 • 利用您订阅的 SOLIDWORKS&#xff0c;可将您的 SOLIDWORKS 设计作品保存为旧版本&#xff0c;与使用旧版本 SOLIDWORKS 的供应商无缝协作。 • 可将零件、装配体和工程图保存为新版本前两年之内的SOLIDWORKS 版本。 优点&#xff1a; 即使其他用户正…

conda 创建虚拟环境

1.为什么要创建虚拟环境 我们在做开发或者跑论文实验可能会同时进行多个任务&#xff0c;这些任务可能会依赖于不同的python环境&#xff0c;比如有的用到3.6有的用到3.7&#xff0c;这时我们创建不同版本的python&#xff0c;放到虚拟环境中给不同的任务分别提供其所需要的版本…

Git相关知识(1)

目录 1.初识Git 1.基础知识 2.centos中下载 2.基本操作 1.创建本地仓库 2.配置本地仓库 3.版本库、工作区、暂存区 4.添加文件 5.add和commit对git文件的作用 6.修改文件 7.版本回退 8.撤销修改 9.删除文件 3.分支操作 1.HEAD与分支 2.创建分支 3.删除分支 …

基于SSM的班级事务管理系统

基于SSM的班级事务管理系统 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台界面 登录界面 班委界面 学生界面 管理员界面 摘要 基于SSM&#xff08;Spring、Spring…

ARM-day9作业

main.c: #include "uart.h"#include "key_it.h"int main(){char c;char *s;uart4_init(); //串口初始化//中断初始化key_it_config();key3_it_config();//完成GPIO相关初始化all_led_init();//风扇初始化fs_init();//蜂鸣器初始化fmq_init();while(1){…

矿区井下智慧用电安全监测解决方案

一、背景 矿区井下作业具有复杂的环境和较高的危险性&#xff0c;对于用电安全的要求尤为严格。传统的管理模式和监测方法往往无法实时、准确地掌握井下用电情况&#xff0c;对安全隐患的排查与预防存在一定局限性。因此&#xff0c;引入智慧用电安全监测解决方案&#xff…

黑马JVM总结(三十二)

&#xff08;1&#xff09;类加载器-线程上下文1 使用的应用程序类加载器来完成类的加载&#xff0c;不是用的启动类加载器&#xff0c;jdk在某些情况下要打破&#xff0c;双亲委派的模式&#xff0c;有时候需要调用应用程序类加载器来完成类的加载&#xff0c;否则有些类它是找…

YB4058是一款经济高效、完全集成的高输入电压单电池锂离子电池充电器

高输入电压充电器支持I2C和OVP保护 概述&#xff1a; YB4058是一款经济高效、完全集成的高输入电压单电池锂离子电池充电器。充电器使用了锂离子电池所需的CC/CV充电曲线。充电器可接受高达27V的输入电压&#xff0c;但当输入电压超过OVP时禁用阈值&#xff0c;通常为6.8V&am…

倒置边框半径卡片

效果展示 CSS 知识点 实现多曲面的思路 实现整体布局 <div class"card"><div class"img_box"></div><div class"content"><div class"price"></div></div> </div>.card {position…

Idea执行Pom.xml导入jar包提示sun.misc.BASE64Encoder jar找不到---SpringCloud工作笔记197

奇怪之前都是好好的,这个是因为,jdk的版本不对,重新打开以后自动被选择成jdk11了...记录一下 原因是从jdk9的时候,这个jar包已经被删除了,所以会报错,如果你用的是jdk自带的这个jar包就会报错,那么还可以,修改,不让他用jdk的,让他用 用org.apache.commons.codec.binary.Base64…

EMC Unity存储(VNXe) service Mode和Normal Mode的一些说明

本文介绍下EMC unity存储设备&#xff08;也包含VNXe存储设备&#xff09;的两种工作模式&#xff1a; Service mode&#xff1a;也叫做rescue mode&#xff0c;存储OS工作不正常或者有其他故障&#xff0c;就会进入这个模式&#xff0c;无法对外提供服务Normal mode&#xff…

centos / oracle Linux 常用运维命令讲解

目录 1.shell linux常用目录&#xff1a; 2.命令格式 3.man 帮助 4.提示符 5.echo输出字符串或变量值 6.date显示及设置系统的时间或日期 7.重启系统 8.关闭系统 9.登录注销 10.wget 下载文件 11.ps 查看系统的进程 12.top动态监视进程信息和系统负载等信息 13.l…