ASCII、Unicode、UTF-8、GBK、全角/半角

news2024/11/23 19:54:31

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。

目录

一、定义

1、ASCII

2、Unicode

3、UTF-8

4、GB2312

5、GBK

6、\u和\x

7、全角和半角

二、相互转化

1、str 与 ASCII

2、str与utf-8

3、str转gbk

4、在编码时想看到底是哪个字符编码失败时,引用try except查看

5、全角与半角的转化


一、定义

1、ASCII

阐述英语字符与二进制位之间的关系,用一个字节来表示,一共有128种字符(最高位均为0)

2、Unicode

这是一种所有符号的编码。

问题:

Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

这产生了两个问题:

(1)难以区别Unicode和ASCII

eg:多个字节编码难以分辨是表示一个Unicode,还是多个ASCII组成

(2)存储浪费

一个字符的二进制编码可能存在许许多多的’0‘。

3、UTF-8

UTF-8就是在互联网上使用最广的一种Unicode的实现方式。它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

4、GB2312

第一个汉字编码标准,共收录了 6763 个常用的汉字和字符。这种编码形式可以用来识别文本中是否含有罕见字。

5、GBK

比GB2312收录的文字更多(包括一些繁体字等等)。GBK包含了所有汉字,一般可以用来检验文本中是否存在乱码。

6、\u和\x

\x指16进制,后面跟两位,表示单字节编码

\u指unicode编码,后面跟着4个16进制数,一般为unicode-16。在python中可以使用encode、decode函数对其进行转化。

7、全角和半角

全角占两个字节,汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。在全角中,字母和数字等与汉字一样占据着等宽的位置(实现对齐,大家占的位置一样大)。

半角一个字符占用一个标准的字符位置。半角占一个字节。半角即为 ASCII 方式的字符,在没有汉字输入法起作用的时候,输入的字母、数字和字符都是半角的。

全角和半角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节。不管是半角还是全角,汉字都要占两个字节。


二、相互转化

1、str 与 ASCII

c = 'a'
print(ord(c)) #str转ascii
num = 23
print(chr(num)) #ascii转str

2、str与utf-8

s = "你"
u = s.encode("utf-8") #str转utf-8
print(u)
print(u.decode("utf-8")) #utf-8转str
#在已知编码的情况想知道其表示的字符
s = b'\xe4\xbd\xa0' 
u = s.decode("utf-8") #utf-8转str
print(u)

结果:

b'\xe4\xbd\xa0'
你
你

3、str转gbk

s = "你"
u = s.encode("gbk") #str转gbk
print(u)
print(u.decode("gbk")) #gbk转str
#在已知编码的情况想知道其表示的字符
s = b'\xc4\xe3' 
u = s.decode("gbk") #gbk转str
print(u)

结果:

b'\xc4\xe3'
你
你

4、在编码时想看到底是哪个字符编码失败时,引用try except查看

t = 'wuhiu﹒~cicuθ﹒😂﹡▫efef'

try:
    t.encode("gb2312")
except UnicodeEncodeError as e:
    print("异常编码为:",t[e.args[2]])

结果:

异常编码为: ﹒

5、全角与半角的转化

Python实现全角与半角相互转换_半角小写字符_黄然大悟的博客-CSDN博客


参考:

字符编码中ASCII、Unicode和UTF-8的区别 - 知乎

彻底搞明白 GB2312、GBK 和 GB18030 - 知乎

\u与\x的区别_\x \u_Takoony的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[acwing周赛复盘] 第 110 场周赛20230701

[acwing周赛复盘] 第 110 场周赛20230701 总结5044. 求和1. 题目描述2. 思路分析3. 代码实现 5045. 三角形数1. 题目描述2. 思路分析3. 代码实现 5046. 智商药1. 题目描述2. 思路分析3. 代码实现 六、参考链接 总结 状态不对,把自己写懵了。T1 模拟币T2 对向双指针…

关于Linux同步机制知识点整理

在Linux系统中,同步机制是操作系统中非常重要的一部分,以下是一些基本要点: 互斥锁 互斥锁是一种「独占锁」,比如当线程 A 加锁成功后,此时互斥锁已经被线程 A 独占了,只要线程 A 没有释放手中的锁&#…

梁宁:VisionPro、GPT、Web3三件套齐备,元宇宙开启

本文内容整理自图灵社区对谈栏目直播,主题为 ChatGPT 真需求,从产品的第一性原理解析。 上篇内容回顾:梁宁:为什么中国没有像 ChatGPT 和 Vision Pro 这样的创新产品? 梁宁,产品战略专家,曾任湖…

chatgpt赋能python:如何在Python中安装PIL

如何在Python中安装PIL Python Imaging Library(PIL)是一款用于处理图像的Python库,它提供了各种图像处理功能,包括大小调整、旋转、裁剪等等。如果你需要在你的Python项目中处理图像,那么PIL是一个不错的选择。 步骤…

DBeaver连接GaussDB

DBeaver 官网:https://dbeaver.io/打开DBeaver,点击菜单栏 “数据库”>“驱动管理” 点击“新建” 填入下面内容: 驱动名称:GS 驱动类型:Generic 类名:org.postgresql.Driver URL模板:jdbc…

Linux:LNMP上搭建discuz论坛(源码安装)

LNMP环境 Linux :LNMP(源码包安装)_鲍海超-GNUBHCkalitarro的博客-CSDN博客 discuz论坛 准备好源码包 LNMP环境正常 yum -y install unzip unzip Discuz_X3.3_SC_UTF8.zip # unzip 源码包名称 mv upload/ /usr/local/nginx/html/tarro…

信号链噪声分析13

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示:这里可以添加技术概要 接 触 ADC 或 DAC 时您一定会碰到这个经常被引用的公式,用于计算转换器理论信噪 比(SNR)。与其盲目地相信表象,不如从根本上了解其来源,因为…

Shell中的流程控制(if/case/for/while)

文章目录 Shell中的流程控制(if/case/for/while)1 if判断1.1 单分支1.2 多分支 2. case语句3 for循环3.1 第一种写法 (())3.2 第二种写法 in 4 while循环4.1 demo14.2. demo2测试let Shell中的流程控制(if/case/for/while) 1 if判…

【C】操作符详解

操作符 算术操作符移位操作符位操作符赋值操作符()复合赋值操作符 单目操作符关系操作符逻辑操作符逗号表达式条件操作符下标引用,函数调用和结构成员 今天给大家带来一篇关于C语言操作符的详细介绍,在C语言中操作符主要有以下几种…

VS工程加载失败 | 找不到导入的项目CUDA xx.props解决方案

问题背景: 如果遇到VS项目某些工程无法加载,有一个可能的原因是属性表没有找到。即props文件无法加载,导致项目加载失败。 解决方案: 找到工程配置 .vcxproj 文件,编辑打开,查找props,发现电脑…

07_Linux并发与竞争

目录 Linux并发与竞争Linux并发与竞争 并发与竞争 保护内容是什么 原子操作简介 原子整形操作API函数 原子位操作API函数 自旋锁简介 自旋锁API函数 信号量简介 信号量API 函数 互斥体简介 互斥体API函数 Linux并发与竞争Linux并发与竞争 Linux是一个多任务操作系…

SQL-每日一题【178.分数排名】

题目 表: Scores 编写 SQL 查询对分数进行排序。排名按以下规则计算: 分数应按从高到低排列。 如果两个分数相等,那么两个分数的排名应该相同。 在排名相同的分数后,排名数应该是下一个连续的整数。换句话说,排名之间不应该有空缺的数字。 …

Redis安装配置及常用redis命令

目录 一、关系型数据库与非关系型数据库 1.关系型数据库 2. 非关系型数据库 3. 关系型数据库和非关系型数据库区别 3.1数据存储方式不同 3.2扩展方式不同 3.3对事务性的支持不同 4.非关系型数据库产生背景 5.总结 二、Redis简介 1.redis的工作过程 ​编辑 2.Redis…

chatgpt赋能python:如何用Python快速找到你需要的资料

如何用Python快速找到你需要的资料 在互联网时代,人们每天都需要浏览大量的信息来获取所需的资源和知识。但是在海量信息面前,如何快速准确地获取你想要的资料呢?这就要依靠搜索引擎了。而Python作为一门通用编程语言,也可以在搜…

路由基础静态路由

路由基础&静态路由 一、路由器基本原理1.1、路由器基本概述1.2、LAN和广播域1.3、路由选路1.3.1、路由器转发数据包1.3.2、IP路由表1.3.3、建立路由表1.3.4、最长匹配原则1.3.5、路由优先级1.3.6、路由度量1.3.7、等价路由 1.4、总结 二、静态路由基础2.1、静态路由配置2.2…

【C++】 Qt-事件(上)(事件、重写事件、事件分发)

文章目录 事件重写事件事件分发 事件 事件(event)是由系统或Qt本身在不同的时刻发出的。比如,当用户按下鼠标,敲下键盘,或窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件是在对用户操作做出响应…

【记录】OLAP引擎中的冷热分层技术

在数据分析的实际场景中,冷热数据往往面临着不同的查询频次及响应速度要求。例如在电商订单场景中,用户经常访问近 6 个月的订单,时间较久远的订单访问次数非常少;在行为分析场景中,需支持近期流量数据的高频查询且时效…

Airtest:Windows桌面应用自动化测试四【Airtest之python本地环境安装、独立IDE运行】

Airtest之python本地环境安装、独立IDE运行 一、环境配置二、安装Airtest三、安装poco四、常见问题4.1若运行代码时,在cv2模块报ImportError: DLL load failed: 找不到指定模块的错,有几种解决方案:4.1.1.本问题的根本原因应该是DLL文件的缺失…

如何在前端写播放音频

ml(html文档、wxml文档等) <audio action{{action}} src"http://music.163.com/song/media/outer/url?id2059780541.mp3"></audio> js文档 action:{"method":"play"}

6.19、一起学JAVA API Object String StringBuffer/StringBuilder

1 前言 亲爱的小伙伴萌,目前我们看到的是Java基础部分的一个新的部分API,这是个啥,又能做啥呢? 其实可以概括成一句话:帮助我们站在巨人的肩膀上,实现更加高效的开发,那么我们来一探究竟吧~ 2 什么是API API&#xff08;Application Programming Interface&#xff0c;应用…