字符集和字符编码的学习

文章目录

  • 标准 ASCII
  • 扩展 ASCII
  • GB2312 编码
  • GBK 编码
  • GB18030 编码
  • Unicode 编码
    • UCS-2 字符集
    • UCS-4 字符集
  • UTF-8 编码

先有字符集,然后对每个字符进行编码,这叫字符编码,不同的编码规则就产生了不同的编码方案。

标准 ASCII

标准 ASCII 码也叫基础 ASCII 码,使用 7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字符。

ASCII 编码是直接将 ASCII 字符集的码位转换成二进制数进行存储。

7 位二进制:0000 0000 ~ 0111 1111 这个范围的二进制数可以表示 128 个字符,最高位没有使用
可见字符:英文字母、数字、标点符号
不可见字符:即控制字符,例如,回车符、换行符等

需要记住的字符 ASCII 编码:
48~57 表示的是数字
65~90 表示的是大写英文字母
97~122 表示的是小写英文字母

扩展 ASCII

后 128 个称为扩展 ASCII 码,用来表示128 个特殊符号字符、外来语字母和图形符号,这叫 ASCII 扩展字符集。
1000 0000 ~ 1111 1111 这个范围的二进制数可以用来表示 128 个字符。
标准 ASCII 和扩展 ASCII 总共可以表示 256 个字符,这些字符都用 1 个字节来表示。

GB2312 编码

GB2312 字符集采有分区管理的模式,组成 94*94 的方阵,每一行称为一个“区”,每一列称为一个“位”,区号位号的范围均为 01-94,区号和位号组成的代码称为“区位码”,共计有 8836 个码位。

把每个字符对应的码位转换成二进制数,就是 GB2312 编码。

收集了 7445 个字符,其中汉字 6763 个。

01~09 区收录了除汉字以外的图形字符,共计 682 个字符
10~15 区为空白区,没有使用
16~15 区收录了 3755 个一级汉字(常用汉字),按拼音排序
56~87 区收录了 3008 个二级汉字(非常用汉字),按部首/笔画排序
88~94 区为空白区,没有使用

01~09 区表示非汉字的图形字符,共计 682 个字符:
在这里插入图片描述
左上角的编号叫“区号”,如上图的 03 区中的字符“y”的位号是 89,那么这个“y”的码位就是 0389

16~55 区收录了 3755 个一级汉字,按拼音排序:
在这里插入图片描述
如上图所示,汉字“饼”的区位码 1793

56~87 区收录了 3008 个二级汉字,按部首/笔画排序:

在这里插入图片描述
二级汉字都是一些不常用的汉字。
如上图所示,汉字“侃”的码位是 5709

如何存储“侃”这个汉字?

计算“侃”这个汉字字符的 GB2312 编码,如下图所示:
在这里插入图片描述

根据上图所示的计算结果,0xD9A9 就是“侃”这个汉字的 GB2312 编码,可为什么加上 A0 呢?不知道。

以上可以知道 GB2312 编码是 2 个字节表示一个字符。

GBK 编码

在 GB2312 字符集的基础上扩充,得到 GBK 字符集,对应的编码叫 GBK 编码。

GB18030 编码

在 GBK 字符集的基础上扩充,增加了很多少数民族的字符,得到 GB18030 字符集,对应的编码叫 GB18030 编码

Unicode 编码

Unicode 的学名是"Universal Multiple-Octet Coded Character Set",通用多八位编码字符集,简称为 UCS。

UCS-2 字符集

Unicode 早期使用 UCS-2 字符集,使用两个字节表示一个字符,可以表示 65536 个字符。

UCS-4 字符集

因为不足以表示全世界的字符,所以升级成了 UCS-4 字符集,使用 4 个字节来表示一个字符,使用 32 位的二进制数来表示字符,可以表示将近 43 亿个字符。

UTF-8 编码

UTF-8(Unicode Transformation Format)是针对 Unicode 的一种可变长度字符编码,它不是一种字符集。

UTF-8 将 UCS-4 字符集的码位划分成 4 个区间。

0x0000 00000x0000 007F0xxxxxxx
0x0000 00800x0000 07FF110xxxxx 10xxxxxx
0x0000 08000x0000 FFFF1110xxxx 10xxxxxx 10xxxxxx
0x0001 00000x0010 FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

汉字“王”在 UCS-4 的码位(即 Unicode 编码)是 0x0000738B,转换成二进制码就是 00000000 00000000 01110011 10001011

0x0000738B 属于 UTF-8 所划分的第三区间,即三字节模板 1110xxxx 10xxxxxx 10xxxxxx00000000 00000000 01110011 10001011 从后面往前面逐个替代模板中的 x,得到 11100111 10001110 10001011,再把这个二进制编码转换成十六进制编码得到 0xe78e8b,而这个就是汉字“王”的 UTF-8 编码了。

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

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

相关文章

移动端怎么让底部固定_移动端排名应该怎么做?两种匹配移动端实战排名干货分享...

关于移动端优化的问题、最近一些兄弟一直在问我应该怎么做?毕竟现在是手机的时代、绝大部分情况下、PC显得有点鸡肋!在讲移动端排名之前、逆冬先来讲两个容易被大家搞错的问题(移动端)。1、逆冬老师你好、我观察现在的移动端都是独…

stripe pay_J2Pay –入门

stripe pay入门将指导您如何通过非常简单的步骤快速开始使用J2pay。 下载 J2Pay在Maven上可用。 <dependency><groupId>com.tranxactive</groupId><artifactId>j2pay</artifactId><version>2.4.0</version></dependency>您…

基于linux设计的贪吃蛇论文,毕业设计(论文)LINUX平台下基于C的贪食蛇游戏设计与实现.doc...

毕业设计(论文)LINUX平台下基于C的贪食蛇游戏设计与实现正在输入(豆丁网laoshutou)为您倾心整理(下载后双击删除)如有需求请发豆丁站内信(下载后双击删除)目 录TOC \h \z \t "样式1,1,样式4,1,样式5,2,样式6,3" HYPERLINK \l "_Toc" 摘 要 PAGEREF _Toc \h…

缓存和缓冲的区别

参考&#xff1a; https://www.cnblogs.com/mlgjb/p/7991903.html https://www.cnblogs.com/xiangxiaolin/p/11840278.html

java环境变量的配置_Java的下载及环境变量的配置

讲讲java的安装,java的官方下载地址为https://www.oracle.com/technetwork/java/javase/downloads/index.html目前oracle官网提供了java的很多版本&#xff0c;但大多数开发者使用的还是java8&#xff0c;博主也是java8&#xff0c;java8目前最稳定&#xff0c;java分为javase,…

cassandra使用心得_避免在Cassandra中使用清单

cassandra使用心得Apache Cassandra是一种快速且可扩展的数据库&#xff0c;多年来&#xff0c;它变得与传统SQL数据库一样容易使用。 至少在表面上。 您使用类似SQL的查询&#xff0c;但是它们有很多限制&#xff1b; 您有一个模式&#xff0c;但是修改它并不像在SQL数据库中…

union的作用 c语言,C语言(union类型及应用)

大端模式、小端模式“大端”和”小端”表示多字节值的哪一端存储在该值的起始地址处。大端字节序(BigEndian)&#xff1a;最高有效位(第一字节)存于最低内存地址处&#xff0c;最低有效位存于最高内存处&#xff1b; (空间向大地址处增长)小端字节序(LittleEndian)&#xff1a;…

Java文件下载/下载文件的案例

文章目录需求分析实现步骤示例代码下载的文件中文名显示问题需求 1.页面显示超链接 2.点击超链接后弹出下载对话框 3.完成图片文件下载 分析 超链接指向的资源如果能够被浏览器解析&#xff0c;则直接在浏览器中展示&#xff0c;如果不能解析&#xff0c;则弹出下载提示框。…

公司电脑监控软件_公司电脑监控软件,如何限制公司电脑网络游戏

在互联网领域里&#xff0c;游戏行业之所以不断推陈出新&#xff0c;种类繁多&#xff0c;最根本的原因还是由于其用户的广泛性&#xff0c;市场的巨大性。玩网络游戏已经是我们身边最为常见的休闲方式&#xff0c;手机、电脑、平板电脑&#xff0c;方便的数码设备为我们提供了…

derby数据库的数据_Derby数据库备份

derby数据库的数据抽象 我已经发布了许多有关Derby的博客&#xff1a; 同一主机上的多个Derby网络服务器 Apache Derby数据库用户和权限 与Maven和内存中Derby数据库的集成测试 这本不打算是一个系列。 但是多年来&#xff0c;我越来越多地使用Derby。 最近&#xff0c;我开…

Servlet中获取请求行的数据

package priv.lwx.javaex.servlet_demo.web.servlet.request; /*** 获取请求行的数据** author liaowenxiong* date 2021/12/29 09:22*/import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import j…

没有内存条电脑能开机吗_开机键过时了!3种电脑开机方法,能让你睡懒觉的技术还不快来学...

电脑开机谁都会&#xff0c;按下电源键等他几十秒就好。不过还有其他的开机方式&#xff0c;有的能让你睡懒觉&#xff0c;有的能让你炫技&#xff0c;还有更多创意等你发挥&#xff0c;想不想来尝试一下呢&#xff1f;能睡懒觉的定时开机如果有每天定时开机的需求&#xff0c;…

c语言编程数独游戏,编程做数独游戏

数独游戏非常好玩&#xff0c;可以训练玩家的逻辑推理能力。数独游戏的规则是&#xff1a;1&#xff0e;在99的大九宫格内&#xff0c;已给定若干数字&#xff0c;其他宫位留白&#xff0c;玩家需要自己按照逻辑推敲出剩下的空格里是什么数字。2&#xff0e;必须满足的条件&…

反引号包裹反引号_五个金色反引号

反引号包裹反引号五种琴弦 从Java 1.0开始&#xff0c;我们就有了字符串文字"like this" 。 我们还想要其他什么字符串&#xff1f; 其他编程语言为我们提供&#xff1a; 表达式插值&#xff1a; s"I am ${age - 10} years old." 插值格式&#xff1a; f…

c语言iota怎么用,C++ std::iota用法及代码示例

存储顺序递增分配val的[first&#xff0c;last]个连续值范围内的每个元素&#xff0c;就像在写入每个元素之后以 val递增。模板&#xff1a;void iota (ForwardIterator first, ForwardIterator last, T val);参数&#xff1a;first, lastForward iterators to the initial and…

web自动化如何在不同浏览器运行_自动化决策环节的“心脏”将如何与众不同?...

原标题&#xff1a;自动化决策环节的“心脏”将如何与众不同&#xff1f;原宝钢研究院首席研究员郭朝晖博士认为&#xff1a;自动化本质是感知、决策和执行的统一自动化的理论基础是控制论。控制论诞生时&#xff0c;控制论之父维纳思考了这样一个问题&#xff1a;机器和人(动物…

Servlet中获取请求头的数据

package priv.lwx.javaex.servlet_demo.web.servlet.request;/*** 获取请求头的数据** author liaowenxiong* date 2021/12/29 11:21*/ import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; import java.ut…

jdk8 :: 什么意思_JDK 13:什么是AggressiveOpts?

jdk8 :: 什么意思JVM 11中已弃用Java VM标志-XX:AggressiveOpts [请参见JDK-8199777和JDK-8199778 ]“因为其行为是不明确的。” JDK-8199778的“问题”部分进一步解释了&#xff08;我强调了 &#xff09;&#xff1a; AggressiveOpts已被用作实现各种实验性能功能的一种包罗…

c语言递归函数检测回文,在C中使用递归函数的回文测试

我试图编写用于测试字符串的程序&#xff0c;如果它是回文或不是&#xff0c;但我总是得到输出&#xff0c;因为它不是一个。我的代码有什么问题&#xff1f;在C中使用递归函数的回文测试#include #include int is_palindrome(int start, int end, char *str){if (str[start] !…

获取macos mojave_高仿MacOS教程

“潮办公”关注我们拥有一台MacBook是很多人的梦想&#xff0c;但是高昂的售价成功逼退了一大波人。MacBook一直以颜值高、轻薄、系统流畅而出名&#xff0c;那么其他的小伙伴们想体验一波苹果系统怎么办&#xff1f;这个软件或许能帮你。Part 1安装Mydockmydock是windows下的一…