常见字符编码简介:ASCII、Unicode、UTF-8、UTF16

科研软件|Adobe Photoshop 2024 (PS 2024) 阅读详情

常见字符编码简介:ASCII、Unicode、UTF-8、UTF16

 https://blog.youkuaiyun.com/Mary19920410/article/details/54882543

 

一、字符集(Charset)

字符:各种文字和符号的总称。包括各国家文字、标点符号、图形符号、数学等。

字符集:一个系统支持的所有字符的集合。

二、字符编码(Character Encoding)

计算机只能识别处理数字,若要处理文本,需先将文本字符转换为计算机可以接受的数字代码。即字符集和实际存储数值之间的转换关系。

三、常见几种编码方式

ASCII字符集、GB2312字符集、Unicode字符集、UTF-8、

3.1 ASCII

由于计算机是美国人发明的,因此,最早只有127个字符(大小写英文字母、数字和一些特殊符号)被编码到计算机里,于是最初设计时,采用8bit(1字节)来存储字符编码。如大写字母'A'的ASCII码为65,小写字母‘z’的ASCII码为122。但是8bit只能表示0-255,如果要表示更多的字符,就必须用更多的字节。

3.2 GB2312

后来世界各国都开始使用计算机。但是要处理中文,一个字节显然不够,所以中国扩展ASCII编码制定了GB2312,用来把中文字符编进去。

GB2312规定:一个小于127的字符的意义与ASCII相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。GB2312是对ASCII的中文扩展。

 

 

但是中文的汉字太多了,后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK包括了GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。 

后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK扩成了 GB18030。

3.3 Unicode

全世界上百种语言,各国都制定了自己的编码标准。但是在多语言混合的文本中,显示会有乱码。

于是,Unicode应运而生。将所有的语言都统一到一套编码方案里。Unicode统一用两个字节表示一个字符,无论是英文字符还是中文字符。Unicode表示英文保持其原编码不变,只是将其长度由8位扩展为16位。

3.4 UTF-8

采用Unicode编码方式时,若所需处理的文本基本上全部为英文,则会比用ASCII编码多用一倍的存储空间。在存储和传输时就十分的不方便。

所以,本着节约精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。这是为传输而设计的编码。

UTF-8是ASCII的一个超集,采用1-6个字节表示一个字符。常见英文字母1字节,中文汉字3个字节。只有很生僻的字符才编码成4-6个字节。设计原则如下:

 

  • 单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同;
  • n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。

这样就形成了如下的UTF-8标记位:

0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

 

比如:大写字母I和中文汉字知的表示如下,

 

I    01001001

知 11100111 10011111 10100101

 

四、总结

 

ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。

拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符

GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。

Unicode编码:包含世界上所有的字符,是一个字符集。

UTF-8:是Unicode字符的实现方式之一,它使用1-6个字符表示一个符号,根据不同的符号而变化字节长度。

 

 

 

参考:

http://www.cnblogs.com/yuguangchuan/p/4310952.html

https://www.zhihu.com/question/23374078

http://blog.youkuaiyun.com/csywwx2008/article/details/17137097

http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html

从SD更新字库到FLASH,再用LCD显示 用Flash当字库存储载体。思路是先将要用到的字库文件存在SD卡,然后存储到Flash,LCD显示时候从Flash中读取 还挺顺利的,移植的原子的程序,自己稍加修改,主要是我的液晶屏函数,Flash读写函数,还有存储文件的flash地址不一样。一晚上搞定,大小字体都OK。挺高兴哈哈。这几天忙工作事情有点耽搁了学习进展嘿嘿 在text.c的showstr函数中char的字体颜色随意设置的,可以显... 阅读详情

相关推荐

实战指南:基于ELK与Grafana构建天融信防火墙日志可视化看板

本文详细介绍了如何基于ELK与Grafana构建天融信防火墙日志可视化看板,包括环境准备、日志收集与解析配置、Elasticsearch存储优化、Grafana看板设计等关键步骤。通过实战案例和优化技巧,帮助用户高效处理天融信防火墙日志,实现安全态势的可视化监控与分析。

weixin_34246529的博客 226

字符编码之间的关系

1、ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。 2、拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符 3、GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。 4、Unicode编码:包含世界上所有的字符,是一个字符集。 5

qq_33393542的博客 2561

Unity 数字孪生实战:PiXYZ Plugin工业模型高效处理指南

本文是Unity数字孪生实战指南,重点介绍了如何使用PiXYZ Plugin高效处理工业CAD模型。针对工业模型导入Unity时面临的格式壁垒、数据爆炸和资产混乱等核心痛点,文章提供了从环境安装、基础导入到智能减面、资产清理的完整解决方案,并分享了预设自动化、运行时导入等高级技巧与性能优化策略,帮助开发者快速打通工业设计与实时交互流程。

weixin_29009501的博客 257

linux 查看和修改文件编码的方法

一、查看 file -i 文件名称 结果如下: 1、ThreadPool.h : text/x-c++ ; charset=utf-8 说明:该文件为文本文件(text),字符集为 utf-8 。 2、ThreadPool.cpp : text/x-c ; charset=us-ascii 说明:该文件为文本文件(text),字符集为 us-ascii 。 拓...

布袋和尚 2559

C++新手也能搞定!Windows下Cesium-Native编译全流程(附依赖下载技巧)

本文为C++新手详细介绍了在Windows系统下编译Cesium-Native库的全流程。重点针对网络环境不佳的情况,提供了手动下载依赖库的实用技巧,并指导用户使用CMake配置、生成解决方案,最终完成编译与测试验证,帮助开发者成功构建这一处理3D地理空间数据的C++运行时库。

weixin_28839549的博客 380

EMQX 结合MySQL实现精细化ACL权限管理实战

本文详细介绍了如何通过EMQX结合MySQL实现精细化的ACL权限管理,提升物联网设备接入和消息传输的安全性。内容包括环境准备、基础配置、权限规则设计技巧以及高级应用与性能优化方案,帮助开发者快速掌握动态生效、便于管理的权限控制方法。

weixin_28683689的博客 197

字符编码

目录 一、ASCII码 二、 Unicode编码 三、UTF-8 四、URL编码 五、base64编码 六、附 一、ASCII码 计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有`0`和`1`两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从`00000000`到`11111111`。 上个世纪60年代,美国制定了一套字符编码,对英语字.

weixin_51045259的博客 5256

Cadence SKILL 语言实战指南:从函数列表到高效自动化脚本

本文是Cadence SKILL语言实战指南,旨在帮助芯片设计工程师从掌握核心函数列表出发,高效构建自动化脚本。文章详细解析了数据处理、数据库访问、流程控制及错误处理四类关键函数,并通过版图层批量修改与参数化单元生成两大实战场景,演示如何将函数组合成解决实际问题的自动化方案,从而显著提升Virtuoso环境下的工作效率。

beta5的博客 705

程序员必备:彻底弄懂常见的7种中文字符编码(转载!)

看到很棒的文章,忍不住搬过来收藏!原作者是鹅厂大佬。我转载一下哈 原文链接:程序员必备:彻底弄懂常见的7种中文字符编码 文章目录一、字符编码要做什么事情?二、几种常见中文编码的关系如何?三、ASCII编码四、GB2312、GBK、GB18030编码【GB2312】【GBK】【GB18030】五、UTF8编码(Unicode Transformation Format)六、其他经常遇到的编码【ANSI编码】【Latin1编码(又名ISO-8859-1编码)】 程序开发常见的ASCII、GB2312、GBK、G

LH is programming hard 9077

# ubuntu 系统使用 yum命令报错 There are no enabled repos.Run “yum repolist all“ to see the repos you have...

# ubuntu 系统使用 yum命令报错 There are no enabled repos.Run "yum repolist all" to see the repos you have.You can enable repos with yum-config-manager --enable

段子手168的博客 6682

[Dify] -进阶13- 使用“知识库 + 工作流”打造智能推荐系统

本文介绍了在Dify平台上构建智能推荐系统的方法,重点阐述了知识库与工作流技术的结合应用。通过知识库管理RAG流程,实现文档上传、向量嵌入和检索优化;利用工作流设计节点化推荐逻辑,支持并行处理与条件分支。以电话销售话术推荐为例,展示了从数据收集到实时生成的完整流程。该方法具有准确性高、扩展性强、维护简便等优势,可广泛应用于各类推荐场景,实现从数据存储到智能推荐的闭环解决方案。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1067

区别:字符集 字符编码 存储编码 ASCII Unicode UCS UTF ANSI UTF-8 UTF16 UTF32 GB2312 GBK GB18030 BIG-5

开发过程中,使用文本文档、Word文档过程中,经常会遇到乱码,这些乱码是怎么产生的? 字符存储都与哪些因素有关? 经常听到的字符集、字符编码是什么?文件存储编码是什么? Windows记事本另存为时可以选择:ANSI、Unicode、Unicode Big Ending、UTF-8,分别表示什么?如何转换?Windows系统如何区分一个txt文档是什么编码的? 基本概念 字符(Chara...

smartDMer的专栏 2313

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 999

字符编码详情

一,ASCII编码。 1、在计算机中,所有的数据在存储和运算时都要使用二进制数表示。而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则。是用7位二进制位表示的,范围是:0000 0000 到 0111 1111。即表示从0~127,一共128个状态,对应128个符号。一般都是用8位二...

weixin_30393907的博客 117

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【转】C# Socket编程(3)编码和解码

【转自:https://www.cnblogs.com/IPrograming/archive/2012/10/13/CSharp_Socket_3.html】  在网络通信中,很多情况下:比如说QQ聊天,通讯双方直接传递的都是字符信息。但是字符信息并不能够直接通过网络传输,这些字符集必须先转换成一个字节序列后才能够在网络中传输,于是这里就产生了编码和解码的概念: 将字符序列转换为字节...

weixin_30642869的博客 81

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

字符编码历史剧

之前在一个项目工程里面 涉及到了COM组件。突然发觉自己在字符串一类的编程方面的基础太薄弱了。于是就来补补这方面的知识理论,既然需要写好字符串,就需要对字符编码比较了解了。 字符编码 我们一听就会想到ASCII编码、Unicode、Utf-8 等等。要是你都能理清,那就没啥必要看下去了。如果有点模糊的话,可以看看,没准能够帮助你理清。 闲话不多说,秀干货: 很久很久以前,有一群人,他们决...

cyq129445的博客 277

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python 字符编码

http://blog.youkuaiyun.com/wanghai__/article/details/6227721 1. 字符编码简介 1.1. ASCII ASCII (American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和

lianliange85的专栏 661

程序员永远的痛之字符编码

字 符编码相信是每个程序员的噩梦,只要是有中文的地方,总是会遇到各种编码的问题,并且这种问题还非常难缠,尤其在linux上,因为上面很多软件都是针对 英语国家开发的,是不会考虑其他语种编码问题。在遇到编码的无数大坑之后,我决定仔细研究下编码问题,因为这就像一道坎一直横在你面前,每次到这里你都会 跌到,每次爬起来之后,你都若无其事,这样的人被称作战士,真正的战士。可惜是个力量战士,做为新时代的智力战

shangdongshangxi520的专栏 488

程序员永远的痛之字符编码的奥秘

字 符编码相信是每个程序员的噩梦,只要是有中文的地方,总是会遇到各种编码的问题,并且这种问题还非常难缠,尤其在linux上,因为上面很多软件都是针对 英语国家开发的,是不会考虑其他语种编码问题。在遇到编码的无数大坑之后,我决定仔细研究下编码问题,因为这就像一道坎一直横在你面前,每次到这里你都会 跌到,每次爬起来之后,你都若无其事,这样的人被称作战士,真正的战士。可惜是个力量战士,做为新时代的智力战

光耀天下 684

Android中检測字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(一)

Android中检測字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(一) package com.android.filebrowser; import java.io.*; import java.net.*; public class FileEncodi...

weixin_30532837的博客 181

Python深入:编码问题总结

一:字符编码简介 1:ASCII 最初的计算机的使用是在美国,所用到的字符也就是现在键盘上的一些符号和少数儿个特殊的符号,一个字节所就能足以容纳所有的这些字符,实际上表示这些字符的字节最高位都为0,也就是说这些字节都在0到127之间,如字符a对应数字97。这套编码规则被称为ASCII(美国标准信息交换码)。 2:GBK、GB2312...

weixin_30305735的博客 119

Oracle字符集的设置

文章目录一、字符集的概念1、字符编码(character encoding):2、字符集(Character set)3、国际编码(Unicode)4、汉字的编码5、汉字的编码选择6、编码的转换二、Oracle的字符集1、字符集和国家字符集2、支持中文的字符集3、NLS_LANG参数三、服务端的字符集1、查看服务端字符集2、修改服务端字符集四、客户端的字符集1、Linux环境2、Windows环境五、应用经验六、版权声明 一、字符集的概念 1、字符编码(character encoding): 字符编码是一

lling_shan的博客 4138

C# Socket编程(3)编码和解码

      在网络通信中,很多情况下:比如说QQ聊天,通讯双方直接传递的都是字符信息。但是字符信息并不能够直接通过网络传输,这些字符集必须先转换成一个字节序列后才能够在网络中传输,于是这里就产生了编码和解码的概念: 将字符序列转换为字节序列的过程称之为:编码 将编码的字节序列转换为字符序列的过程称之为:解码 例如:对于Unicode字符来说,编码是指将一组Unicode字符转换为一个...

weixin_33714884的博客 108

编码问题的历史由来

这篇有趣的文章可以帮你了解一下他们的历史。 from http://xiaozhublog.spaces.live.com/Blog/cns!95406584A7CB184F!/ 8月26日 unicode,ansi,utf-8,unicode big endian的故事 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开

oCiHaoBeiDao的专栏 501
上一篇: C++之命名空间
下一篇: 简述C++泛型化编程思想
TuxedoLinux
博客等级 码龄9年 268粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值