当前位置: 首页 > news >正文

002集——统一码(Unicode)及ASCII码详解

        统一码(Unicode),它也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

        如果把各种文字编码形容为各地的方言,那么Unicode就是世界各国合作开发的一种语言。

在这种语言环境下,不会再有语言的编码冲突,在同屏下,可以显示任何语言的内容,这就是Unicode的最大好处。就是将世界上所有的文字用2个字节统一进行编码。那样,像这样统一编码,2个字节就已经足够容纳世界上所有的语言的大部分文字了。

Universal Multiple-Octet Coded Character Set,简称为UCS。

现在用的是UCS-2,即2个字节编码,而UCS-4是为了防止将来2个字节不够用才开发的。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

 编码方式

        在Unicode中:汉字"字"对应的数字是23383。在Unicode中,我们有很多方式将数字23383表示成程序中的数据,包括:UTF-8、UTF-16、UTF-32。UTF是"UCS Transformation Format"的缩写,可以翻译成Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。例如,"汉字"对应的数字是0x6c49和0x5b57,而编码的程序数据是:

BYTE data_utf8[] = {0xE6, 0xB1, 0x89, 0xE5, 0xAD, 0x97}; // UTF-8编码

WORD data_utf16[] = {0x6c49, 0x5b57}; // UTF-16编码

DWORD data_utf32[] = {0x6c49, 0x5b57}; // UTF-32编码

这里用BYTE、WORD、DWORD分别表示无符号8位整数,无符号16位整数和无符号32位整数。UTF-8、UTF-16、UTF-32分别以BYTE、WORD、DWORD作为编码单位。"汉字"的UTF-8编码需要6个字节。"汉字"的UTF-16编码需要两个WORD,大小是4个字节。"汉字"的UTF-32编码需要两个DWORD,大小是8个字节。根据字节序的不同,UTF-16可以被实现为UTF-16LE或UTF-16BE,UTF-32可以被实现为UTF-32LE或UTF-32BE。

UTF-8

UTF-8以字节为单位对Unicode进行编码。从Unicode到UTF-8的编码方式如下:

Unicode编码(十六进制)║UTF-8字节流(二进制)

F ║0xxxxxxxx║110xxxxx 10xxxxxx║1110xxxx 10xxxxxx 10xxx10xxxx║11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

计算机只是处理数字。它们指定一个数字,来储存字母或其他字符。在创造Unicode之前,有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符:例如,单单欧州共同体就需要好几种不同的编码来包括所有的语言。即使是单一种语言,例如英语,也没有哪一个编码可以适用于所有的字母,标点符号,和常用的技术符号。这些编码系统也会互相冲突。也就是说,两种编码可能使用相同的数字代表两个不同的字符,或使用不同的数字代表相同的字符。任何一台特定的计算机(特别是服务器)都需要支持许多不同的编码,但是,不论什么时候数据通过不同的编码或平台之间,那些数据总会有损坏的危险。

ASCII码

大多数计算机采用ASCII码(美国标准信息交换码),它是表示所有大小写字母、数字、标点符号和控制字符的7位编码方案。统一码(Unicode)包含ASCII码,'\\u0000'到'\\u007F'对应全部128个ACSII字符,0-127共128个编码。在JAVA中可以使用统一码。

unicode字符表:

ANSI和UTF-8的区别

ANSI 和 UTF-8 是两种不同的编码方式,它们的主要区别在于字符的编码方式和所支持的语言范围。

ANSI(American National Standards Institute)是一种美国的行业标准,用于在不同国家和地区的操作系统中表示字符。ANSI 使用单一字节(8位)来编码字符,这导致了一些问题,因为它只能表示有限的字符集,并且不同版本的 ANSI 编码之间不兼容。例如,在简体中文 Windows 操作系统中,ANSI 编码可能对应于 GBK 编码;而在日文中,它可能与 Shift_JIS 编码相关联。因此,当需要在不同系统和平台上共享文本时,ANSI 编码可能会遇到困难,因为不是所有平台都能正确解析所有 ANSI 编码的文本内容。1

UTF-8(Unicode Transformation Format)是一种广泛使用的多字节编码方案,它可以表示世界上几乎所有语言和符号。UTF-8 通过使用 1 到 4 个字节来编码每一个字符,从而能够表达更丰富的字符集。与 ANSI 编码相比,UTF-8 具有更好的通用性和扩展性,能够在多种系统和平台上正确地表示文本。12

总结一下,ANSI 主要是一个美国标准的单字节编码,而 UTF-8 是一个通用的多字节编码,适合跨文化和跨平台的文本传输。

相关文章:

002集——统一码(Unicode)及ASCII码详解

统一码(Unicode),它也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以…...

下载、安装Jenkins

进入官网 下载Jenkins https://www.jenkins.io 直接点击Download 一般是下长期支持版 因为它是java写的,你要运行它(Jenkins.war)肯定要有java环境 有两种方式去运行它,一种是下载Tomcat(是很经典的java容器或者jav…...

python flask 魔术方法

魔术方法作用_init_对象的初始化方法_class_返回对象所属的类_module_返回类所在的模块_mro_返回类的调用顺序,可以找到其父类(用于找父类)_base_获取类的直接父类(用于找父类)_bases_获取父类的元组,按它们…...

2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024)

2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024) 会议简介 2024年清洁能源、环境与智慧城市国际研讨会(ISCEESC2024)将在中国丽江举行。本次会议主要围绕清洁能源、环境和智慧城市等研究领域,旨在为该研究领域的专家学者提供一个国际…...

Postgres与DynamoDB:选择哪个数据库

启动新项目时需要做出的决定之一是使用哪个数据库。如果您使用的是Django这样的包含电池的框架,那么没有理由再三考虑。选择一个受支持的数据库引擎,就可以了。另一方面,如果你使用像FastAPI或Flask这样的微框架,你需要自己做出这…...

【ELK】logstash快速入门

1.概述 1.1.什么是logstash? 之前我们聊了es,并且用docker搭建了一个eskibana的环境。es目前最普遍的用法是用来存储日志的,然后结合kibana对日志做一些可视化的工作。既然要收集日志,就面临着一个问题: 各个系统的…...

SQL sever2008中创建用户并赋权

一、创建数据库dream CREATE DATABASE dream; 二、创建登录用户XZS 法一:使用SSMS创建 通过查询 sys.syslogins 系统视图来确定当前登录是否具有系统管理员权限。执行以下查询语句: SELECT name, isntname FROM sys.syslogins WHERE sysadmin 1;选…...

SpringBoot2-Jwt

1.官网 jwt.io/libraries 2.选jose4j pom <dependency><groupId>org.bitbucket.b_c</groupId><artifactId>jose4j</artifactId><version>0.9.4</version> </dependency> 3.创建jwt工具 public class JwtUtil {private stat…...

2、安全开发-Python-Socket编程端口探针域名爆破反弹Shell编码免杀

用途&#xff1a;个人学习笔记&#xff0c;欢迎指正&#xff01; 目录 主要内容&#xff1a; 一、端口扫描(未开防火墙情况) 1、Python关键代码: 2、完整代码&#xff1a;多线程配合Queue进行全端口扫描 二、子域名扫描 三、客户端&#xff0c;服务端Socket编程通信cmd命…...

Python 套接字详解:与网络通信的温柔邂逅

网络世界&#xff0c;犹如一片无垠的海洋&#xff0c;充满了无限的可能性和无尽的探索。而在这个浩瀚的网络宇宙中&#xff0c;Python 语言以其简洁优雅、功能丰富而备受青睐。在 Python 的世界里&#xff0c;有一个神奇的工具&#xff0c;它就像是一座桥梁&#xff0c;将不同的…...

如何在Linux系统中安装MySQL

要在Linux系统中安装MySQL&#xff0c;您可以使用系统的包管理工具。以下是一些常见的Linux发行版的安装命令&#xff1a; 1. **Ubuntu/Debian:** bash sudo apt-get update sudo apt-get install mysql-server 2. **Fedora:** bash sudo dnf install mysql-server 3. **Cent…...

51单片机基础:定时器

1.定时器介绍 51单片机通常有两个定时器&#xff1a;定时器 0/1&#xff0c;好一点的可能有定时器3。 在介绍定时器之前我们先科普下几个知识&#xff1a; 1&#xff0c;CPU 时序的有关知识 ①振荡周期&#xff1a;为单片机提供定时信号的振荡源的周期&#xff08;晶振周期或…...

高速接口PCB布局指南(五)高速差分信号布线(三)

高速接口PCB布局指南&#xff08;五&#xff09;高速差分信号布线&#xff08;三&#xff09; 1.表面贴装器件焊盘不连续性缓解2.信号线弯曲3.高速信号建议的 PCB 叠层设计4.ESD/EMI 注意事项5.ESD/EMI 布局规则 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 …...

MySQL使用报错1045 - Access denied for user ‘root‘@‘localhost‘ (using password: YES)

问题描述 设备&#xff1a;MacBook Pro macOS Monterey 12.1 MySQL版本&#xff1a;8.0.27 arm-64 描述&#xff1a;在使用Navicat连接电脑本地的数据库时&#xff0c;发现连接不上了&#xff0c;报了个错误1045 - Access denied for user rootlocalhost (using password: YES)…...

UE4 C++创建摄像机摇臂和相机并且设置Transform

新建MyPawn C类 .h #include "GameFramework/SpringArmComponent.h" //SpringArm组件 #include "Camera/CameraComponent.h" //Camera组件class 工程名称_API AMyPawn : public APawn { //定义组件变量 public:UPROPERTY(VisibleAnywhere, BlueprintRead…...

<网络安全>《14 日志审计系统》

1 概念 日志审计系统是用于全面收集企业IT系统中常见的安全设备、网络设备、数据库、服务器、应用系统、主机等设备所产生的日志&#xff08;包括运行、告警、操作、消息、状态等&#xff09;并进行存储、监控、审计、分析、报警、响应和报告的系统。 日志审计系统是一种用于…...

嵌入式软件设计方式与方法

1、嵌入式软件与设计模式 思从深而行从简 软件开发&#xff0c;难的不是编写软件&#xff0c;而是编写功能正常的软件。软件工程化才能保证软件质量和项目进度&#xff0c;而设计模式使代码开发真正工程化&#xff0c;设计模式是软件工程的基石。 所谓设计模式就是对常见问题的…...

ELAdmin 前端启动

开发工具 官方指导的是使用WebStorm&#xff0c;但是本人后端开发一枚&#xff0c;最终还是继续使用了 idea&#xff0c;主打一个能用就行。 idea正式版激活方式&#xff1a; 访问这个查找可用链接&#xff1a;https://3.jetbra.in/进入任意一个能用的里面&#xff0c;顶部提…...

完全让ChatGPT写一个风格迁移的例子,不改动任何代码

⭐️ 前言 小编让ChatGPT写一个风格迁移的例子&#xff0c;注意注意&#xff0c;代码无任何改动&#xff0c;直接运行&#xff0c;输出结果。 额。。。。这不是风格转换后的结果图。 ⭐️ 风格迁移基本原理 风格迁移是一种计算机视觉领域的图像处理技术&#xff0c;它的目标…...

查看jar包编译的jdk版本

解压jar包 jar xf xxx.jar 查看对象 javap -v Myclassname javap -v KafkaProducer.class |grep version -C 3 J2SE 8.0 52(0x33 hex) J2SE 7.0 51(0x32 hex) J2SE 6.0 50 (0x32 hex) J2SE 5.0 49 (0x31 hex) JDK 1.4 48 (0x30 hex) JDK 1.3 47 (0x2F hex) JDK 1.2 46 …...

SwiftUI原生集成ChatGPT API:从架构设计到流式响应实战

1. 项目概述&#xff1a;一个原生的Swift版ChatGPT客户端最近在折腾iOS和macOS上的AI应用开发&#xff0c;发现了一个挺有意思的开源项目&#xff1a;alfianlosari/ChatGPTSwift。简单来说&#xff0c;这是一个用纯SwiftUI构建的、直接调用OpenAI官方API的ChatGPT客户端。它不是…...

【RK3588开发】SPI回环

SPI回环 &#xff08;1&#xff09;内核SPI子系统使能 修改内核配置需要先加载默认配置&#xff0c;然后图形界面修改后需保存配置在以下目录下勾选图中的选项&#xff1a; **>**Device Drivers —> ​ ->[*] SPI support —>至少勾选以下选项&#xff1a; Rockchi…...

私域团队如何用企业微信 API 提升客户维护效率?

一、 场景描述&#xff1a;为什么你的团队每天都在“瞎忙”&#xff1f; 很多私域团队看似忙碌&#xff0c;实则效率低下。典型的现象包括&#xff1a; • 重复回答&#xff1a;每天 70% 的时间在复制粘贴相同的话术&#xff08;如&#xff1a;发货时间、优惠券怎么领&#xff…...

基于RAG架构的企业级AI知识库:从原理到部署实战

1. 项目概述&#xff1a;一个AI驱动的企业级知识管理新范式最近在探索企业知识库与AI结合的实际落地方案时&#xff0c;我注意到了GitHub上一个名为akshata29/entaoai的项目。这个项目名称本身就是一个很好的线索&#xff1a;“entao” 很容易让人联想到 “Enterprise AI”&…...

AMD APU异构计算与能效优化技术解析

1. 异构计算时代的能效革命&#xff1a;AMD APU技术深度解析 在半导体行业摸爬滚打十几年&#xff0c;我亲眼见证了处理器能效比从单纯依赖制程进步到架构创新的转变。2014年AMD提出的25x20计划&#xff08;到2020年实现APU能效提升25倍&#xff09;曾被视为天方夜谭&#xff0…...

Godot 4 Steam联机插件:无缝替换ENet,快速接入Steam网络服务

1. 项目概述&#xff1a;一个为Godot 4游戏引擎设计的Steam多人联机插件 如果你正在用Godot 4开发一款PC端的多人游戏&#xff0c;并且希望它能通过Steam平台顺畅地联机对战&#xff0c;那么你很可能已经遇到了一个核心难题&#xff1a;如何将Godot内置的网络模块与Steam的联机…...

扰动补偿自触发MPC控制器设计【附代码】

✨ 长期致力于永磁同步电机、模型预测控制、扰动补偿、死区时间优化、自触发控制研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;基于预测误差驱动的扰…...

arp-scan:穿透防火墙的局域网设备发现利器,为什么它比传统扫描工具更有效?

arp-scan&#xff1a;穿透防火墙的局域网设备发现利器&#xff0c;为什么它比传统扫描工具更有效&#xff1f; 【免费下载链接】arp-scan The ARP Scanner 项目地址: https://gitcode.com/gh_mirrors/ar/arp-scan 在复杂的网络环境中&#xff0c;快速准确地发现局域网内…...

基于MCP协议构建低成本另类投资数据引擎,赋能AI原生投研

1. 项目概述&#xff1a;一个为AI助手注入投资洞察力的“数据引擎” 如果你是一名对冲基金的分析师、量化研究员&#xff0c;或者只是对市场有敏锐嗅觉的个人投资者&#xff0c;你肯定知道&#xff0c;在今天的市场里&#xff0c;光看K线图和财报已经不够了。真正的“阿尔法”…...

如何快速清理电脑中的重复图片:AntiDupl.NET终极指南

如何快速清理电脑中的重复图片&#xff1a;AntiDupl.NET终极指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾因电脑中堆积如山的重复图片而烦恼&#xff1…...