快速彻底理解字符集和字符集编码的区别

编码规则UTF-8 和 UTF-16的区别 UTF-8: 以可变长度编码字符,具有较好的 ASCII 兼容性和网络传输效率,非常适合以英语为主的文本处理和互联网应用。UTF-16: 适合需要处理大量非 ASCII 字符的场景,虽然占用存储空间较大,但在处理字符时较为高效,适合在内存中存储文本和内部字符处理。 阅读详情

很多文章搞长篇大论大讲特讲人类为了让计算机能够准确表示各种字符的演化历史,这完全是没有必要的,几句话就能说明白。

"字符集"和"字符集编码"是两回事

字符集(Charset Set),仅仅是一套从【字符】到【数字】的映射字典,它只规定了应该用什么数字来标识字符,仅此而已,至于计算机在存储的时候应该用什么字节来标识,字符集是根本不管这事的。Unicode, GB2312, ASCII都属于字符集。

字符集编码(Character Encoding),专门规定了字符集中的字符在计算机中应该如何存储,说白了就是怎么用字节来表示他们。UTF8, UTF16, 都属于字符集编码。

大家感受到区别了么,如果把字符集比作立了一套法律,那么字符集编码就是法律的执行方式。只立法而不去执行则立法毫无意义,字符集也是如此。只有字符集而没有规定如何编码,那对于计算机来说也毫无用处。因为在计算机看来,世间万物都是字节,而只有将人类规定的字符集【编码】成字节,计算机才能识别和存储。

有人既是字符集,又是字符集编码

注意这里有一个地方非常容易混淆,那就是有的人【既是字符集,又是字符集编码】。比如GB2312作为字符集的时候,规定了“你”这个汉字用十六进制的0xC4E3来表示,同时GB2312又是编码规范,因此在计算机中,可以直接使用0xC4E3来存储“你”。ASNII也是同理,都属于字符集跟其编码完全一致的玩意。

而Unicode就不一样了,想要存储Unicode中规定的字符,就必须使用另一种编码方式对其进行编码,比如UTF8就是一种使用1~3个字节来表示的一种编码方式。

Java

在Java语言里,它使用的是Unicode字符集,和UTF16的编码。也就是说Java能表示出全部Unicode字符集中规定了的字符,然后在内存中存储时,通过UTF16中定义的规则,将其转换成字节。例如“a”这个字母,在Unicode中规定要用十六进制下的0x61来表示,但是实际存储的时候可不是直接存的0x61,而是查UTF16表,发现应该是0x0061。所以,Java中一个char类型在内存中占用两个字节,因为他们存储的是UTF16编码后的字节,而UTF16则是把所有Unicode字符都使用固定了两字节的方式进行编码。

Unicode 和 ASCII 字符集 简单来说:​​ASCII​​ 是​​早期​​的字符编码标准,主要用于表示​​英文字符​​,每个字符固定占用​​1个字节​​。​​Unicode​​ 是一个更​​全面​​的字符集,旨在涵盖​​全球几乎所有字符​​,并为每个字符分配一个唯一的码点。它通过 ​​UTF-8​​ 等编码方式实现,UTF-8 是一种​​变长编码​​,兼容 ASCII 的同时能高效表示各种语言字符。Unicode 提供了字符表示的​​统一标准​​,而 UTF-8 则是该标准在实践中最​​高效、最兼容、最流行​​的实现方式。 阅读详情

相关推荐

易懂案例:用班费记账来理解区块链编码、解码、Base64编码、Base58编码、Base58Check编码是什么?其原理、数学逻辑、优缺点、区别和联系是什么?

班级班费管理与区块链编码技术对比 本文通过班级班费管理的场景,生动解释了区块链中的编码技术原理,包括Base64、Base58和Base58Check三种编码方式: 编码基础:类比班委用简写符号记录支出,揭示了编码的本质是信息格式转换,实现数据标准化、可读性和容错性。 Base64编码:像班级通用的账单格式,适合跨平台传输,通过6位分组和64个字符实现二进制数据转换,但存在数据膨胀问题。 Base58编码:类似班级精简的账单编号,通过剔除易混淆字符实现更短的标识,但缺乏校验机制。 Base58Check:作

通俗易懂学IT 650

常见字符集及编码

基本概念 字符(Character) 是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 字符集(Character set) 是一个系统支持的所有抽象字符的集合。通常以二维表的形式存在,二维表的内容和大小是由使用者的语言而定。如ASCII,GBxxx,Unicode等。 字符编码(Character encoding) 是把字符集中的字符编码为特定的二进制数,以便在计算机中存储。

wuwangxinan的专栏 2606

易懂案例:用班费记账来理解区块链编码、解码、Base64编码、url-safe-Base64编码、Base58编码、Base58Check编码是什么?其原理、数学逻辑、优缺点、区别和联系是什么?

本文通过班级班费管理场景,类比解释了区块链中的编码技术原理与应用。文章首先介绍了编码解码的基本概念,如同班委用"1-A-20"简写记录收支,区块链通过编码实现数据标准化转换。随后详细解析了五种编码方式:Base64用于跨平台数据分享,url-safe-Base64适配URL特殊字符,Base58剔除易混淆字符适合人工处理,而Base58Check在Base58基础上增加哈希校验防篡改。最后对比了各编码的字符集、功能特性和适用场景,指出区块链通常采用Base58Check来平衡防错性、安全

通俗易懂学IT 725

字符集和字符编码(Charset & Encoding)

相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"бЇЯАзЪСЯ"、"�????????"?还记得HTTP中的Accept-Charset、Accept-Encoding、Accept-Language、Content-Encoding、Content-Language等消息头字段?这些就是接下来我们要探讨的。 1.基础知识 计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"

顺其自然~专栏 3497

STM32+ESP8266接入OneNet的MQTT嵌入式实现

MQTT是一种轻量级发布/订阅模式的消息传输协议,广泛应用于资源受限的物联网终端设备通信。其基于TCP/IP栈构建,具备低带宽占用、小代码体积和高可靠性等技术优势,特别适合STM32等MCU与Wi-Fi模组协同工作的边缘节点场景。在实际工程中,需结合AT指令集控制ESP8266完成Wi-Fi连接、TCP建链及MQTT会话管理,并通过环形缓冲区、空闲中断检测等机制保障UART异步通信稳定性。本文围绕STM32F103与ESP8266硬件协同、OneNet平台对接、JSON消息解析与OLED状态反馈等关键环节,

yhn456789的博客 1035

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

在 (UE4 4.27) UHierarchicalInstancedStaticMesh(HISM)原理分析 这篇博客大致介绍HISM组件从游戏线程到渲染线程的重建KD-Tree和剔除并提交DrawCall逻辑,但是没有分析渲染层的大致数据结构和实现. 可以看出FHierarchicalStaticMeshSceneProxy 实际存储Instance数组数据来自于FInstancedStaticMeshSceneProxy FHierarchicalStaticMeshSceneProxy只是以FClu

qq_29523119的博客 2724

理解字符集和字符编码(Charset & Encoding)

理解字符集和字符编码(Charset & Encoding)前言一、字符集和字符编码的理解二、常用字符集和字符编码1.ASCII1.1.标准ASCII1.2.扩展ASCII2. ISO-8859-13. GB23124. GBK5. Unicode字符集5.1. UTF-8编码5.2. UTF-16编码5.3. UTF-32编码5.4. 字节序常见疑问 前言 由于字符集和字符编码的种类比较多、历史也很久远,在许多方面不好理解。在此梳理总结我对字符集和字符编码的认识与理解,以供查阅。若有不对,欢迎指正

子謀的博客 2524

NFS共享速度慢?麒麟系统性能调优5个关键参数实测对比

本文针对银河麒麟服务器系统上NFS共享速度慢的问题,通过实测对比分析了五个关键调优参数。重点探讨了rsize/wsize传输块大小、TCP/UDP协议选择、sync/async模式权衡等,并结合麒麟系统特性提供了具体的优化建议与配置示例,旨在帮助用户有效提升国产化环境下的文件共享性能。

weixin_29254029的博客 332

各种字符集和编码详解

编码产生 在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的...

技术成就梦想,梦想成就未来。If you try hard enough, it can be. 1104

从ResNet到EfficientNet:特征金字塔网络(FPN)在不同骨干网中的适配指南

本文深入探讨了特征金字塔网络(FPN)与ResNet、VGG、EfficientNet等主流骨干网络的适配策略。文章详细解析了FPN的核心原理,并针对不同骨干网络的特征提取特性,提供了通道对齐、参数量估算及迁移学习的系统化指南,旨在帮助开发者在目标检测等视觉任务中构建高性能、高效率的模型。

weixin_29047919的博客 220

Nifi SNI 问题解决方案

Nifi 在配置 SSL 时,如果没有正确设置主机名(SNI),就会导致。为了解决这个问题,我们需要重新配置 Nifi 的 SSL 证书,并确保所有相关配置项(如服务器地址、证书路径和密码等)正确无误。以下是一个详细的解决步骤,以帮助你正确配置 Nifi 并解决 SNI 错误。文件中的配置项(如服务器地址、端口和证书路径),以及正确设置用户凭证。通过这些配置,你可以确保 Nifi 在支持 HTTPS 的同时,正确处理 SSL/TLS 的 SNI 问题。文件,配置服务器地址、端口以及证书路径和密码。

m0_58786911的博客 2293

字符集和字符编码有什么区别

当我们将字符(包括文字、数字、符号等)存入计算机时, 需要将字符转换为计算机能够理解的二进制传输或存储。字符集:是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符编码:是一套法则,使用该法则能够对自然语言的字符与数字系统进行配对。

loopnz的博客 531

MR2数据集实战:5步搞定多模态谣言检测模型训练(附完整代码)

本文详细介绍了如何使用MR2多模态数据集构建高精度谣言检测系统,涵盖环境配置、数据准备、多模态特征工程、模型架构设计、训练调优及部署优化等5个关键步骤。通过双线性融合技术处理文本、图像和网页三模态数据,解决特征对齐和模态冲突等工程难题,并提供完整代码实现和性能优化方案。

weixin_42657024的博客 238

五分钟快速理解字符集与字符编码的区别

字符集 字符集,也称作字符编码方案,是为字符集合中每一个字符分配一个唯一ID的编码字符集.包括了Unicode,ASCII,ANSI等字符集。 Unicode字符集 — 所有字符组成的字符集 国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。如果全世界每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。 ASCII字...

Hibiki's Ending 1339

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(10) C++ 前置后置增减运算符重载形式与比较

C语言的++、–运算符在此不讨论。 文章目录1、前置后置增减运算符重载的形式2、前置和后置运算符的性能比较 1、前置后置增减运算符重载的形式 自增运算符“++”和自减运算符“–”分别包含两个版本。即运算符前置形式(如 ++x)和运算符后置形式(如 x++),这两者进行的操作是不一样的。因此,当我们在对这两个运算符进行重载时,就必须区分前置和后置形式。C++根据参数的个数来区分前置和后置形式。如果按照通常的方法来重载 ++ 运算符(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载

二进制君 5827

【知识分享】车载以太网PCB布局设计指南

本文将深入探讨在设计车载以太网设备的印刷电路板(PCB)时需要着重考虑的若干关键主题。这些主题广泛涵盖了数据布线设计,以确保其符合信号完整性(SI)和电磁兼容性(EMC)标准;外部元器件的合理摆放;以及采取有效的抗电磁干扰(EMI)布局策略等方面。通过全面且细致地处理这些关键环节,能够显著提升车载以太网设备的性能与可靠性。

一只豌豆象的博客 1352

常用字符集编码的概要特性(一)

搞清常用编码特性是解决字符集编码问题的基础。字符集编码的识别与转换、分析各种乱码产生的原因、编程操作各种编码字符串(例如字符数计算、截断处理)等都需要弄清楚编码的特性。了解一种字符集编码主要是要了解该编码的编码范围,编码对应的字符集(都包含哪些字符),和其他字符集编码之间的关系等。ASCIIASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和

蘸月居 1261

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

字符集详解

字符集基本概念 字符:是计算机世界里关于文字和符号的总称;包括文字,标点,数字,图形符号等;例如一个汉字,一个字母,一个逗号。 字符集:一个字符集就是多个字符的有序集合。好比一本字符字典,每个国家字符类型不同,个数也不同,常见的字符集有ASKII字符集,Unicode字符集,GB2312字符集。 字符编码:由于计算机只能识别二进制的0和1,字符集中的字符,计算机是不能识别的,所以要将字符集转化为计算机可以识别的二进制,这个转化的过程就是字符编码。简单可以认为是将字符集中字符所对应的十进制编号转化为二进制,

搬砖信条 6828

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

字符集和字符编码的问题汇总

首推通俗易懂系列: 字符集详解(一看就懂系列) 常见的几种字符集 十分钟搞清字符集和字符编码 字符编码常识及问题解析 得到python默认编码: 不同版本是不同的,大家自己试一试 python编码 import sys ss = sys.getdefaultencoding() print(ss) ...

xiaoxiaodechongzi的博客 270

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深入的谈一谈,字符集的编码方式。

由于接触到的编码方式比较多,比较杂,比较容易搞混,而且经常性

xuheazx的专栏 1057

MySQL字符集入门:从报错到理解

经过查阅资料,我了解到MySQL中的字符集(Character Set)决定了数据库如何存储文本数据,而校对规则(Collation)则定义了字符串的比较和排序规则。

NightshadeRaven21的博客 832

[转]常用字符集编码详解

转自:http://www.douban.com/group/topic/6922168/ASCIIASCII码是7位编码,编码范围是0×00-0×7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0×00-0×20和0×7F共33个控制字符。只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系

Orange 736

常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、unicode、UTF-8

常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、unicode、UTF-8 ASCII     ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符。     只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为

iw1210的专栏 1513

让VIM彻底告别乱码

1 字符编码基础知识字符编码是计算机技术中最基本和最重要的知识之一。如果缺乏相关知识,请自行恶补之。这里仅做最简要的说明。1.1 字符编码概述所谓的字符编码,就是对人类发明的每一个文字进行数字化表示。最经典的ASCII编码就是西方人发明的针对英文字符的编码方法,包括26个英文字母、数字、标点、特殊字符等。问题是,这种编码的范围是0-127,只能对128个字符进行编码。当计算机来到其他国家后发现,除

smstong的成长轨迹 5万+

字符集编码详解

ASCII 、GB2312、GBK、GB18030、unicode、UTF-8 ASCII字符集编码     ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符。     只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在

随手记两笔 439

常用字符集编码

ASCII     ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符。     只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件...

homepagecn的专栏 233
上一篇: 如何手动编译Apple Silicon M1版本的JavaFX SceneBuilder
下一篇: Maven中如何跳过不支持skip参数的插件执行
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值