一文读懂UTF-8的编码规则

这篇具有很好参考价值的文章主要介绍了一文读懂UTF-8的编码规则。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前写过一篇文章“一文彻底搞懂计算机中文编码”里面只是介绍了GB2312编码知识,关于utf8没有涉及到,经过查询资料发现utf8是对unicode的一种可变长度字符编码,所以再记录一下。
一文读懂UTF-8的编码规则,操作系统,中文编码,java
现在国家对于信息技术中文编码字符集制定的标准是《GB 18030-2022 信息技术 中文编码字符集》

首先需要明确GB 18030是字符集,定义计算机系统中需要显示哪些中文,UTF-8是一种编码方式,定义计算机系统中怎样去显示。
我们以中文“爸”为例,看GB 18030中怎么定义的,如下图:
一文读懂UTF-8的编码规则,操作系统,中文编码,java
B0:第一字节
D:第二字节高位
6:第二字节低位
爸:字形
7238(16进制):GB/T 13000代码位置

GB13000 全称:国家标准GB13000:2010《信息技术 通用多八位编码字符集(UCS)第一部分:体系结构与基本多文种平面》,此标准等同采用国际标准ISO/IEC 10646-2003,IDT《信息技术 通用多八位编码字符集(UCS)第一部分:体系结构与基本多文种平面》。Unicode 标准在基本平面上与GB 13000保持一致。采纳UTF-16方案作为未来实现01到0F共15个辅助平面的方式。其它方面与GB 13000基本一致。
为了便于多个文种的同时处理,国际标准化组织下属编码字符集工作组研制了新的编码字符集标准,ISO/IEC 10646。该标准第一次颁布是在1993年,当时只颁布了其第一部分,即ISO/IEC 10646.1: 1993,中国相应的国家标准是GB 13000.1-93《信息技术 通用多八位编码字符集(UCS) 第一部分:体系结构与基本多文种平面》。制定这个标准的目的是对世界上的所有文字统一编码,以实现世界上所有文字在计算机上的统一处理。

UTF-8编码规则如下:
Utf8分成单字节、双字节、三字节、四字节模式,具体如下:
0xxxxxxx(7bit)
110xxxxx 10xxxxxx(11bit)
1110xxxx 10xxxxxx 10xxxxxx(16bit)中文
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx(21bit)

中文是使用三字节模式,所以中文“爸”转换如下:
7238二进制:0111 0010 0011 1000
按照三字节模式编码:1110 0111 1000 1000 1011 1000
转换十六进制后:E 7 8 8 B 8

程序验证:文章来源地址https://www.toymoban.com/news/detail-728893.html

public class GBKTest {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String nh = "爸";

        byte[] bs = nh.getBytes("utf-8");
        for (int i=0;i<bs.length;i++) {
            int n = bs[i];
            if (n < 0)
                n += 256;
            int d1 = n / 16;
            int d2 = n % 16;
            System.out.println(hexDigits[d1] + " " + hexDigits[d2]);
        }

    }

    private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
}

到了这里,关于一文读懂UTF-8的编码规则的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux从入门到放弃】Linux操作系统环境变量一文详解

    🧑‍💻作者: @情话0.0 📝专栏:《Linux从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢!   提到环境变量,大家应该都不会陌生,不管学习Java还是Phython都需要去安装环境变量,尤其是我自己在做深度学习

    2024年02月05日
    浏览(51)
  • UNIX家族?Windows NT家族?一文讲清操作系统繁杂的家族史

    本专栏更新速度慢,简单讲讲操作系统的那些事,让不是做操作系统开发的同学也能大概认识操作系统这个出现在生活各处的东西 浅淡操作系统系列第0篇 目录 关于专栏 贝尔实验室 UNIX Linux BSD Windows NT 结语 快捷翻页 参考文章 讲操作系统肯定离不开贝尔实验室了,贝尔实验

    2024年02月13日
    浏览(60)
  • 2.3.1操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则

    在存储管理当中,操作系统会负责将外存的一些文件调入到内存当中,以便给CPU调用,如果调用的内容不在内存当中,那么会产生一种中断,叫做缺页中断。然后从外存调数据,调完数据再返回,接着访问之前的断点部分。 在调用的过程当中,如果是一个几十G的文件,调入

    2024年02月03日
    浏览(47)
  • 一文读懂JavaScript DOM节点操作(JavaScript DOM节点操作详解)

    一、什么是节点 DOM模型是树状结构模型,二组成这棵树的就是一个个点,在网络术语中称之为节点。 节点是一个模型中最基本的组成单位。DOM模型是由一个个节点组成的,DOM节点也有其不同的类型。 二、节点类型 DOM节点分为5种类型: 文档节点(就是整个HTML文档,也就是

    2024年01月22日
    浏览(48)
  • 一文读懂大唐杯所有名词解释 大唐杯仿真实验模拟满分操作详解:

    名词解释:  大唐杯名词解释 名词 定义 核心网 核心网部分就是位于网络子系统内,核心网的主要作用是把A口上来的呼叫请求或数据请求,接续到不同的网络上 接入网 接入网是指核心网络到用户终端之间的所有设备,其长度一般为几百米到几公里,因而被形象地称为\\\"最后

    2023年04月09日
    浏览(62)
  • 一文读懂CPU工作原理、程序是如何在单片机内执行的、指令格式之操作码地址码

    CPU的控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。由运算器执行对应的机器指令,并将结果通过地址总线写回数据段 中间处理器(CPU,Central Processing Uni

    2024年01月16日
    浏览(42)
  • IntelliJ IDEA 统一设置编码为utf-8编码

    第一步: File-Settings-Editor-File Encodings 第二步:如果你的IDEA是老版本的话,在File-Other Settings-Default Settings -Editor-File Encodings 同第一步的操作进行设置 第三步:将项目中的.idea文件夹中的encodings.xml文件中的编码格式改为uft-8 第四步:File-Settings-Build,Execution,Deployment - Compiler - Jav

    2024年02月09日
    浏览(44)
  • 设置Tomcat字符编码UTF-8

    我这里是Tomcat7,标签大概在70行左右

    2024年02月16日
    浏览(45)
  • Python utf-8编码转换方法

    Python utf-8编码转换方法 在Python编程开发中,我们经常需要处理各式各样的字符串,其中,涉及到字符串的编码问题就是一个很重要的方面。特别是在我们需要将数据传输到不同的系统或应用程序中,正确的编码就至关重要。其中,UTF-8编码是一种常用的编码方式,下面我们就

    2024年02月08日
    浏览(41)
  • VS2017修改代码编码格式为utf-8

    对于国内用户来说,大多设置Windows操作系统语言为简体中文(编码为GBK或GB2312),由此导致Visual Studio2017默认采用GBK/GB2312编码格式,其创建的项目文件(.cpp,.h等)都采用GBK/GB2312编码,可能会给代码的移植性带来一点阻碍(主要是中文乱码),笔者就经常用VS运行github等的项目然后

    2023年04月15日
    浏览(46)