2025年全网最全面、全详细的编码、解码知识

全网最全面、全详细的编码、解码知识计算机的世界中 它只能懂得 0 和 1 即二进制 但是 我们交流的时候是通过字符进行交流 所以 如果想要计算机了解我们想表达的东西 以及我们想了解计算机想表达的东西 就需要在字符和 0 与 1 之间进行转换 也就是 编码和解码 编码和解码 就编码和解码而言 针对的是我们 即在计算机中闯荡的人 这样就不会混淆这两个概念 编码

大家好,我是讯享网,很高兴认识大家。

计算机的世界中,它只能懂得0和1(即二进制),但是,我们交流的时候是通过字符进行交流,所以,如果想要计算机了解我们想表达的东西,以及我们想了解计算机想表达的东西,就需要在字符和0与1之间进行转换,也就是: 编码和解码

编码和解码

就编码和解码而言,针对的是我们(即在计算机中闯荡的人),这样就不会混淆这两个概念。

编码: 将字符按照对应的编码类型转换成计算机能够识别的0或者1(类似于生活中的:将中文翻译成英文的翻译官)

解码: 将0和1根据对应的解码类型转换成我们能够读懂的字符(类似于生活中的: 将英文翻译成中文的翻译官)

常见的字符集

ASCII、GB2312、Unicode、GBK等

(一)ASCII字符集和ASCII编码

ASCII字符集: 全称《美国信息交换标准代码》,主要用于显示现代英语和其它西欧语言,主要包括:可显示字符(英文字母、阿拉伯数值、标点符号)、以及控制字符(回车、换行、退格等特殊字符)。

ASCII编码: 美国定制的交换标准,目的是将ASCII字符集包含的字符转换成计算机能够识别的二进制(0和1),它是最通用的信息交换标准,到目前为止总共定义了128个字符。

ASCII编码缺点: 只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号,因此只能用于显示现代美国英语(而且在处理英语当中的外来词如naïve、café、élite等等时,所有重音符号都不得不去掉,即使这样做会违反拼写规则),而且对其他的语言支持力度也不大,所以现在苹果也使用Unicode替换ASCII。

(二)GBXXXX字符集

(1) GB2312字符集:

  • 全称:《信息交换用汉字编码字符集》,刚开始ASCII字符集只包含了阿拉伯数字、字母和一些特殊符号,这个编码只适用于美国和西方的一些国家,而不适用于使用汉字的国家,为了使用汉字的国家也能够和计算机进行沟通,中国国家标准总局发布了标准号为:GB2312的编码格式,它适用于汉字处理、汉字通信等系统之间的信息交换,除了中国大陆使用外,新加坡等地也采用此编码。
  • GB2312字符集共收录了6763个简体汉字,它的收录包括了拉丁字母、日文平假名等在内的682个全角字符,GB2312编码可以将GB2312字符集包含的字符转换成计算机能够识别的二进制0和1。

(2)GBK字符集

  • 全称:《汉字内码扩展规范》,因为GB2312字符集编码只支持简体汉字和一些特殊符号,繁体字和一个特殊简体字都没有收录其中,所以微软针对GB2312做了拓展,在GBK字符集中收录了繁体字,并最早在Window95简体中文版使用。
  • GBK拓展了GB2312字符集,共收录了两万多个文字,GBK编码可以将GBK字符集收录的字符转换成计算机能够识别的二进制0和1。

(3)GB18030字符集

  • 全称: 国家标准GB 18030-2005《信息技术 中文编码字符集》,因为GBK是由微软首先制定的,并不属于国家标准,所以国家为了兼容GBK字符集制定了GB18030字符集,它是中华人民共和国现时最新的内码字集,除了兼容GBK字符集外,还支持GB 13000及Unicode字符集的全部统一汉字。
  • GB 18030字符集共收录汉字七万多个,并且存储方式采用的是可变长字节编码,每个字可以由1个、2个或4个字节组成。
(二)Unicode字符集
  • Unicode字符集的出现: 当计算机出现在全球各地时,为了与计算机进行交流,指定了各种各样的标准如GB232/GBK/GB18030/BIG5的编码方案,如果只在符合对应标准的地区使用则完全没有问题,但是如果通过网络与其他的地区进行交流时,因为各地的编码的标准都不一样,就会在转换中出现"乱码"现象,为了解决这个问题,Unicode字符集应运而生。
  • Unicode也称为: 统一码/万国码/单一码,它是业界的一种标准,通过它计算机可以实现世界上不同地区数十种文字的显示,2005年Unicode就已经收录了超过十万个字符,现在由Unicode组织进行管理运作。
  • Unicode编码系统为表达任意语言的任意字符而设计,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
  • Unicode编码标准现在有三种具体实现,分别是:UTF-8、UTF-16、UTF-32。

(1) UTF-8字符编码:

  • 它是实现了Unicode编码方案的一种可变长字符编码(定长码),也是一种前缀码。
  • 它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部份修改,即可继续使用。
  • UTF-8已经逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
  • 互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。
  • UTF-8编码使用一至四个字节为每个字符编码(其中ASCII字符集中的128个字符只占1字节,还有附加符文的拉丁文、希腊文等需要2个字节,其他常用的文字占用3个字节,还有极少数的字符占用4个字节)。

(2) UTF-16字符编码:

  • 它是实现了Unicode编码方案的一种可变长字符编码(定长码)
  • 因为Unicode字符集中收录了很多字符,但是常用的一般不会超过65535个以外的字符,所以出现了UTF-16(2字节=16位)。
  • UTF-16优点: 它在空间效率上比UTF-32高两倍,因为每个字符只需要2个字节来存储(除去65535范围以外的),而不是UTF-32中的4个字节。
  • UTF-16缺点: 不兼容ASCII。

(3) UTF-32字符编码:

  • 它是实现了Unicode方案的一种定长字符编码。
  • 它使用4个字节的数字来表示每个字母、符号,或者表意文字(ideograph)。
  • 优缺点: 使用4个字节存储每个字符,效率高,处理速度快(因为不用计算需要几个字节进行存储),但是浪费空间。
四:举例说明编码与解码的过程
四:举例说明编码与解码的过程

通过上面的基础规则学习,我们已经对字符集、编码、解码等基础知识有了基本的认识。现在我们就通过图形化来举一个例子更加形象理解的这些知识(以:ASCII字符集为准,用我们编程入门的最常见的字符串:hello world为例子)

编码: 在屏幕输入文字 -> 根据指定编码类型 -> 将输入的文字编码成计算机能够识别的二进制数 -> 计算机存储编辑成的二进制数值


讯享网

在这里插入图片描述

解码: 计算机读取存储的二进制数值 -> 根据指定的解码类型解码 -> 将二进制数值解码成字符集中表达的字符 -> 在屏幕显示

在这里插入图片描述

五:乱码出现的原因
五:乱码出现的原因

通过上面的例子,我们能够更加清楚编码和解码的过程。同时,也看出了乱码出现的原因:

  • 编码过程和解码过程使用的编码方式不一致

在这里插入图片描述

  • 编码/解码对应的字符集不存在对应的字符

在这里插入图片描述

六:解决乱码
六:解决乱码

知道出现乱码的两个原因,要解决乱码就要同时满足以下两个条件:

1. 编码过程和解码过程使用同一种编码方式

  1. 使用支持需要编码解码的字符串对应的字符集

在这里插入图片描述

七:经常遇到的乱码场景与解决
七:经常遇到的乱码场景与解决
一:IDEA工具出现乱码

File -> setting -> 输入File encoding -> 设置成对应的字符集

在这里插入图片描述

二:Mysql数据库乱码和编码设置

通过控制台登录到mysql后。

  • 查询当前默认的数据库编码方式:

show variables like ‘character_set%’

在这里插入图片描述

  • 设置数据库编码方式

//当前会话,退出控制台后又恢复回原来默认的编码方式

set character_set_server=utf8;

set character_set_database=utf8;

//全集范围,无论是否退出控制台,以后都是使用这个编码方式

set global character_set_database=utf8;
先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以扫码领取!

img

最后

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

image

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。

image

image

、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

[外链图片转存中…(img-gskXgjBg-44)]

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。

[外链图片转存中…(img-5zVVOwOL-44)]

[外链图片转存中…(img-0xDiEqyL-44)]

需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!

小讯
上一篇 2025-01-25 15:05
下一篇 2025-03-03 16:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/11425.html