常用的字符集和字符编码
基础概念
字符
字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等
字符集
一个操作系统支持的字符的集合。
字符编码和解码
将每个字符都设置一个唯一编号,编码就是将字符集中的字符编号以一定形式转化为字节存储下来,解码则反之,将存储的字节转换为某个字符集的字符编号。
关于屏幕上的字符显示,其实显示的是字形码,将某字符集的编号和字形一一对应(忽略字体),则可以在屏幕上显示字符。
例如ASCII和GB系列,它们即是字符集也是编码方案,即表示它们的字符编码和存储的一样;但Unicode只是字符集,UTF-8一系列是编码方案。
ASCII
ASCII使用一个字节表示一个字符,包含所有大小写英文字母、数字0-9和一些符号等,实际只用了7位,最高位固定位0,范围为0x00~0x7F(0~127),共表示128字符。常用于美国和以英语为主的国家。
有个经常用到的技巧:由于大小写字母对应的ASCII的值相差32,所以小写字母转大写字母只需要 小写字母的ASCII值减去32 就可得到该字母的大写。(a是97,A是65)
附:ASCII码表
ISO-8859-1
别名Latin1,常用于描述北美和西欧语言,也是使用一个字节描述一个字符,范围为0x00~0xFF(0~255),其中0x00~0x7F和ASCII码一样,0x80-0x9F之间是控制字符,0xA0-0xFF之间是一些文字符号。
附:ISO-8859-1码表
中文编码(GB系列)
GB2312
全称《信息交换用汉字编码字符集·基本集》,是中国第一个汉字编码标准,GB是国标的首字母,共收录了 6763 个常用的汉字和字符,其中一级汉字3755个, 二级汉字3008个;
同时收录了包括 拉丁字母、 希腊字母、 日文、平假名及片假名字母、 俄语在内的682个字符。
GB2312是双字节编码,一个字符用两个字节表示,第一个字节称为高位字节(0xA1~0xF7),第二个字节称为低位字节(0xA1~0xFE)。为了兼容ASCII,两个字节的最高位都为1。
整个字符集分为94(01~94)个区,每个区又分为94(01~94)位,第88~94区未使用。
区位码
总共有 94 个区,每个区含有 94 个汉字或者字符,每个汉字或者字符都对应一个分区编号和分区内的位置编号,称为区位码。
国标码
国标码也叫交换码,用于交换文件所使用的编码,在早期,不同的操作系统可能使用不同的内码,如果它们之间要交换文件,则会发生乱码的现象,当时的解决方法是交换文件之前先转成交换码再交换,接收者收到之后再转成内码。交换码是比较早期的一种方案,目前系统大都采用内码作为交换码。
ASICII 码为 0-31 的这 32 个字符是不可显示的字符,为了避免和这些字符的码点冲突,将 分区编号和分区内位置编号都加上32 ,把这个转换的结果称为国标码。
比如:汉字 "中" 字分区编号是 54,分区内位置编号是 48,加上 32 之后,分区编号是 54 + 32 = 86,分区内位置编号是 48 + 32 = 80,所以 "中" 字 的国标码是 86 80
内码
国标码和ASICII码还是存在一定的重复,比如"中" 字的国标码是 86 80,对应第一个字节是 86,第二个字节是80,而在ASICII 码中它们分别代表大写字母V和大写字母P,这就无法区分它们到底是一个汉字,还是两个字母。
为了兼容ASCII,把国标码中的每个字节的最高位置为 1,还是以 "中" 字为例,它的国标码是 86 80,加上128后,第一个字节是86 + 128 = 214,第二个字节是 80 + 128 = 208,转化成 16 进制是 0xD6 0xD0。
国标码的每个字节都加上 128 后,得到国标码的机内码,简称内码,汉字是以内码的形式在计算机中存储和传播的。
附:GB2312码表
GBK
全称 《汉字内码扩展规范》,共收录了两万多个汉字和字符,完全兼容 GB2312,增加了一些人名、繁体字、日语和朝鲜语中的汉字,利用了GB2312未使用的编码空间。GBK并不是国家标准。
编码范围: 第一个字节 0x81–0xFE,第二个字节 0x40–0xFE。
附:GBK码表
GB18030
全称国家标准GB 18030-2005《信息技术 中文编码字符集》,共收录70244个汉字和字符,在GBK的基础上增加了中日韩语中的汉字和少数名族的文字及字符,完全兼容 GB2312,基本兼容 GBK。
GB18030 是变长多字节字符集,每个字或字符可以由一个,两个或四个字节组成。编码空间庞大,最多可定义161万个字符。
为了兼容GBK,前两个字节和GBK保持一致。
Unicode(万国码)
Unicode编码系统为表达任意语言的任意字符而设计。它使用4字节的数字来表达每个字母、符号,或者表意文字(ideograph)。每个数字代表唯一的至少在某种语言中使用的符号。
Unicode仅仅是字符集,它只规定了字符的唯一编号,编码是用UTF-8、UTF-16等编码格式。
实际上,如果每个字符都用Unicode规定的4字符,那绝对是非常浪费的,所以UTF系列对Unicode做了一定压缩和转换。
Unicode共分为17个plane(组),plane0称为基本平面,其他的称为扩展平面,数字范围是0~0x10FFFF,每一个数字,就是一个代码点(Code point)。
UTF-8
变长编码格式(1~4字节),是Unicode的一种实现。将代码点转为二进制bit,不够位数左侧补0。为了解决字符间分隔,即到底几个字节表示一个字符,采用字节的最高位连续1的个数决定。如下表,这种格式比较省空间,第一段和ASCII相同
| 代码段 | 编码 |
| 0x000000~0x00007F | 0xxxxxxx |
| 0x000080~0x0007FF | 110xxxxx 10xxxxxx |
| 0x000800~0x00FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
| 0x010000~0x10FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
UTF-16
UTF-16使用2个或4个字节,其中2个字节表示基本平面,4个字节表示扩展平面。为了解决字符分隔,将基本平面的两段代码点保留,不表示任意字符。
110110xxxxxxxxxx(0xD800~0xD8FF)为高位代理,
110111xxxxxxxxxx(0xDC00~0xDFFF)为低位代理,
如果下两个字节以这俩开头,那么表示该字符是扩展平面的,需要读取4个字节,否则就是基本平面的,读取2个字节。
| 代码段 | 编码 |
| 0x000000~0x00FFFF | xxxxxxxx xxxxxxxx |
| 0x010000~0x10FFFF | 110110yy yyyyyyyy 110111xx xxxxxxxx |
UTF-32
UTF-32使用4个字节存储代码点,将代码点转为32位bit,位数不够左侧补0。
| 代码段 | 编码 |
| 0x000000~0x10FFFF | xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx |
字节序(ByteOrder Mark)
也叫大小端(BE,LE),超过2个字节就涉及到存储时,高字节放在高地址还是低地址的问题。如果高位字节在高地址,低位字节在低地址,那么称为小端,反之称为大端。
例如 0x1234,大端模式:
低地址-->高地址
0x12 0x34
小端模式:
低地址-->高地址
0x34 0x12
字节序一般放在文件的开始,标记高位在前还是低位在前。UTF-8可以没有字节序。字节序如下表
| 编码格式 | 字节序 |
| UTF-8 | EF BB BF |
| UTF-16 LE | FF FE |
| UTF-16 BE | FE FF |
| UTF-32 LE | FF FE 00 00 |
| UTF-32 BE | 00 00 FE FF |
相关文章:
常用的字符集和字符编码
基础概念 字符 字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等 字符集 一个操作系统支持的字符的集合。 字符编码和解码 将每个字符都设置一个唯一编号,编码就是将字符集中的字符编号以一定形式转化为字节存储下来,…...
容器技术简介
引言 随着云计算、大数据、人工智能等技术的不断发展,容器技术作为一种新兴的虚拟化技术,正逐渐成为IT领域的热点。容器技术可以帮助开发者更好地管理、部署和扩展应用程序,提高开发效率和应用程序的可靠性。本文将深入探讨容器技术的概念、…...
数据分享|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据...
全文链接:http://tecdat.cn/?p22813 本教程为读者提供了使用频率学派的广义线性模型(GLM)的基本介绍。具体来说,本教程重点介绍逻辑回归在二元结果和计数/比例结果情况下的使用,以及模型评估的方法(点击文末“阅读原文…...
macos 不支持svn安装
macos 10.13可能不支持svn命令,所以要安装 xcode-select --install 弹窗在线安装失败的话只能手动下载安装 打开:Sign In - Apple 搜索Command Line Tools (macOS 10.13) 下载9.4.1版本直接安装后即可...
如何通过实际操作来加深对Linux命令和概念的理解?
作为一个新手,你一定不要被Linux那堆命令吓到。其实,它们就像你的“超能力”,只要你掌握它们,你就能成为Linux世界的超级英雄! 首先,我们要了解的是,Linux命令其实就像你的“魔法咒语”&#x…...
【开发语言】C语言与Python的互操作详解
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...
华为配置聚合vlan(Super vlan--Sub vlan)
聚合vlan,Aggregation vlan,也称Super vlan,可以实现用Sub vlan二层隔离广播域,但又将这些Sub vlan聚合使用同一IP子网和网关的情况。 这样,多个Sub-VLAN共享一个网关地址,节约了子网号、子网定向广播地址、…...
CentOS7安装时直接跳过了安装信息摘要页面的解决方法
最近在配置Hadoop虚拟机的时候,创建的centos7虚拟机在安装信息摘要时直接自动跳过,直接跳到设置用户名和密码,在重复多次的重新删除安装后发现了问题所在: 在进行到选择操作系统来源时,注意是否出现“该操作系统将使用…...
python基础运用例子
python基础运用例子 1、⼀⾏代码交换 a , b :a, b b, a2、⼀⾏代码反转列表 l[::-1]3、合并两个字典 res {**dict1, **dict2}**操作符合并两个字典for循环合并dict(a, **b) 的方式dict(a.items() b.items()) 的方式dict.update(other_dict) 的方式 4、⼀⾏代码列…...
k8s基本概念
一、什么是Kubernetes二:Kubernetes部署方式的演变三、为什么要用K8S四、K8S的特性五、Kubernetes 集群架构与组件5.1 Master 组件① Kube-apiserver② Kube-controller-manager③ Kube-scheduler④ AUTH 认证模块 5.2 配置存储中心5.3 Node 组件① Kubelet② Kube-…...
Python exp() 函数
描述 exp() 方法返回x的指数,ex。 语法 以下是 exp() 方法的语法: import mathmath.exp( x ) 注意:exp()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。 参数 x -- 数值表达式。 返回值 返回x的指数,ex。 实例 以下展…...
Day 34 贪心算法 part03 : 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
134. 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas…...
气象站的构成及功能应用
气象站是一种用于观测、记录和报告天气数据的设备。它是由数据采集系统、通讯系统、供电系统和立杆支架构成。 一、气象站的构成: 数据采集系统:用于测量气温、湿度、风速、风向、气压、降雨量、雪深等气象参数。 通讯系统:收集和处理传感…...
Qt中布局管理使用总结
目录 1. 五大布局 1.1 QVBoxLayout垂直布局 1.2 QHBoxLayout水平布局 1.3 QGridLayout网格布局 1.4 QFormLayout表单布局 1.5 QStackedLayout分组布局 1.6 五大布局综合应用 2. 分割窗口 3. 滚动区域 4. 停靠区域 1. 五大布局 1.1 QVBoxLayout垂直布局 #include <…...
(位运算) 剑指 Offer 15. 二进制中1的个数 ——【Leetcode每日一题】
❓ 剑指 Offer 15. 二进制中1的个数 难度:简单 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。 提示ÿ…...
基于SSM的新能源汽车在线租赁系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
CTF 代码审计之绕过过滤的空白字符
题目 <?php header("Content-Type:text/html;charsetutf-8"); highlight_file(02kbzf.php);//引入名为 flag2.php 的文件。 include(f . lag2 . .php);//初始化变量 $info 和 $req。 $info ""; $req [];//读取文件 flag2.php 的内容到变…...
【Vue】 Vue3 安装说明,适合小白新手
1、独立版本 我们可以在 Vue.js 的官网上直接下载最新版本, 并用 下载 Vue.js https://unpkg.com/vuenext 2、使用 CDN 方法 以下推荐国外比较稳定的两个 CDN,国内还没发现哪一家比较好,目前还是建议下载到本地。 Staticfile CDN(国内&am…...
电脑提示“系统找不到指定的文件”怎么办?
“系统找不到指定的文件”对于Windows用户来说是一个很常见的错误,尤其是Win10用户,经常会遇到Win10提示找不到指定文件。在此错误后面有时还会出现错误代码:0x80070002,但是,故障类型或代码在不同的操作系统规范上是不…...
向openssl中添加一个最简单的算法
文章目录 一、尝试在sha.c中添加新的函数二、添加自定义算法2.1 添加对应文件2.2 相关配置2.3 编译运行 一、尝试在sha.c中添加新的函数 在尝试添加新算法前,我先尝试在原有的旧算法中添加一个新函数,看是否能被编译并生成对应的动态链接库。 关于open…...
LinuxUDP丢包自动化巡检实践
LinuxUDP丢包自动化巡检实践这是一篇面向中级 Linux 使用者的技术文章,主题聚焦在UDP丢包,重点讨论无连接流量、内核缓冲和应用接收能力。在真实生产环境中,UDP丢包相关问题往往不会以单一错误形式出现,而是混杂在日志、权限、资源…...
从YOLOv5到昇腾NPU:一份避坑无数的PyTorch模型迁移实战笔记(含性能调优)
从YOLOv5到昇腾NPU:一份避坑无数的PyTorch模型迁移实战笔记(含性能调优) 去年接手一个工业质检项目时,客户要求在昇腾NPU上部署YOLOv5模型。本以为只是简单的环境适配,没想到从驱动安装到性能调优,整整踩了…...
终极指南:如何用免费C工具快速管理天龙八部单机版游戏数据
终极指南:如何用免费C#工具快速管理天龙八部单机版游戏数据 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool 还在为《天龙八部》单机版的数据管理而烦恼吗?TlbbGmTool是一款专为…...
国自然最后冲刺:如何用ChatGPT把自查做到“零漏项”?
各位同仁好,我是七哥。一个在高校里从事人工智能相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude等大模型学术实操相关问题,多多交流,相互成就,共同进步。 2026年是国自然改版元年,模板大变,旧套路失效,新坑又挖了不少。今天七…...
从ZEMAX到SOLIDWORKS:手把手教你搞定红外平行光管的跨软件光机设计流程
从ZEMAX到SOLIDWORKS:红外平行光管光机协同设计全流程解析 在光学工程领域,红外平行光管的设计往往需要跨越光学仿真与机械实现两大专业领域。这种"光机协同设计"过程既考验工程师对光学原理的理解,又要求熟练掌握专业软件间的数据…...
别再傻傻分不清!PECL、CML、LVDS三种高速差分接口,硬件工程师选型避坑指南
高速差分接口选型实战:PECL、CML、LVDS的工程化决策指南 当PCB布线密度突破8层板、信号速率迈入Gbps时代,差分接口的选择直接决定系统稳定性。某通信设备厂商曾因误用LVPECL接口导致整批产品EMC测试失败,损失超百万——这类故事在硬件圈屡见不…...
AI临床研究助手会先在哪些环节跑出来,真正的效率杠杆是什么
AI 临床研究助手最先落地的地方,不会是直接替代研究者做关键判断,而是进入高频、重复、可审计、边界清晰的研究流程节点。本文从技术架构角度拆解它会优先出现在哪些环节,以及开发团队如何用 workflow engine、LLM API、audit log 和 metrics…...
如何快速掌握ComfyUI智能图像分割:面向新手的完整指南
如何快速掌握ComfyUI智能图像分割:面向新手的完整指南 【免费下载链接】comfyui_segment_anything Based on GroundingDino and SAM, use semantic strings to segment any element in an image. The comfyui version of sd-webui-segment-anything. 项目地址: ht…...
初次接触大模型API的开发者选择Taotoken作为起点的主要考量与体验
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初次接触大模型API的开发者选择Taotoken作为起点的主要考量与体验 对于初次接触大模型API的开发者而言,面对众多服务商…...
Hermes Agent 任务追踪实战:3 类日志审计配置+2 步故障自愈触发流程
1. 日志审计不是“看日志”,而是让 Hermes Agent 自己学会写诊断报告 大多数人第一次配置 Hermes Agent 的任务追踪能力时,会下意识打开 logs/ 目录,用 tail -f 盯着滚动的文本发呆——这本质上还是在用人工方式做运维。真正的工程化日志审计,是让 Hermes Agent 在任务执行…...
