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

2023-11-02

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

目录

一、定义

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θ﹒									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASCII、Unicode、UTF-8、GBK、全角/半角 的相关文章

随机推荐

  • std::stoi系列函数自动识别8进制、16进制数的方法

    像这样写只能转为0 string str 0x12 int i stoi str 正确的写法应该是这样 string str 0x12 int i stoi str 0 0 指定base是0 函数则自动判断 不写的话 默认值是10 当然不给
  • Java类和对象的练习题

    1 冒泡排序 package one 使用冒泡排序 实现如下的数组从小到大排序 int arr new int 34 5 22 98 6 76 0 3 public class pao public static void main Str
  • 【转】计算机网络——三次握手与四次挥手

    转载来源 网络编程知识预备 2 三次握手与四次挥手 流量控制 滑动窗口 拥塞控制 半连接状态 2MSL 目录 一 三次握手 什么是三次握手 三次握手图解 过程解析 1 第一次握手 2 第二次握手 3 第三次握手 二 四次挥手 什么是四次挥手
  • 关于电脑找不到vcruntime140_1.dll,无法继续执行代码的解决方案-这几种解决方法轻松解决

    vcruntime140 1 dll文件是Windows操作系统中必要的动态链接库文件之一 当出现错误提示 vcruntime140 1 dll文件未找到 或 vcruntime140 1 dll已丢失 时 就需要对该问题进行解决 以下是一
  • springboot读写json文件,格式化写入json,java

    java springboot读写json文件 这是一个很酷的动作 而且是格式化写入json 美观漂亮 有问题可以咨询我的微信yizheng369 源码地址 https gitee com 618859 java springboot up
  • 属性重要性的举例(定性数据聚类)

    近日在解决一组定性数据的聚类问题 看文献时觉得论文中 基于属性重要性的定性数据聚类方法 举例不太容易理解 尤其是对我这种不喜欢看数学公式的人 所以写了这篇以备忘 1 基础知识 粗糙集和等价关系可参考 https blog csdn net
  • JAVAのIO框架---commons-io

    commons io包下载地址 Commons IO Download Apache Commons IO 进入后点击第二个链接下载 解压完后 箭头所指就是我们这次要用的jar包了 复制它 进入idea 导入jar包最关键的一步来了 右键粘
  • 3.【多级缓存架构】数据库和缓存不一致的情况分析和解决方案

    3 多级缓存架构 数据库和缓存不一致的情况分析和解决方案 文章目录 3 多级缓存架构 数据库和缓存不一致的情况分析和解决方案 1 最初级的缓存不一致的问题以及解决方案 1 1 问题 先修改数据库 在删除缓存 如果删除缓存失败了 就会导致数据
  • 基于express的文件上传功能实现

    基于express 的文件上传功能 功能描述 可以上传文件 并在后台中看到上传的文件 可以上传图片 并进行一个简单预览 点击提交后可以在后台中看到 功能展示 功能实现 index html
  • 爬虫实例分析

    下面我将介绍如何一步一步将豆瓣的top250的网页数据爬取并保存在本地 首先我们需要python的基础 定义变量 列表 字典 元组 if语句 while语句等 然后利用了解爬虫的基本框架 原理 爬虫就是模仿浏览器去访问网络中的网页 并将网页
  • 我心目中的优秀开发人员标准 兼谈OO和设计模式

    看了包建强的blog 一个优秀 NET程序员的技能树 想说些个人意见 包建强所列举的技能很多 可以说绝大部分人都达不到他说的标准 难道达不到那个标准就算不上优秀了 也不尽然 每个人有自己的看法 我的看法 对于 net方面的开发人员 我认为应
  • 你与高薪offer的距离是否还差这一份985页Java面经?

    前言 现在已经九月底 金九银十也已经过去了一大半 很明显今年的面试季明显不如往年火热 对于求职者来说 也更难了一些 马上迎来国庆节 假期一过 十月份又过去了三分之一 综合来看今年确实不是面试的最佳时期 不过趁今年所剩的时间来好好准备 明年的
  • 统计学-基于R (第四版) 贾俊平编著 第一章:数据与R语言 习题答案 【自用】

    习题1 1 1 这题没写存储 只写了录入 wagelevels lt c 低收入户 中等偏下户 中等收入户 中等偏上户 高收入户 yr2016 lt c 3750 7338 10508 14823 28225 yr2017 lt c 464
  • 使用phpmyadmin遇到问题“Warning in ./libraries/sql.lib.php#613 count()

    在安装好phpmyadmin后遇到问题 Warning in libraries sql lib php 613 count Parameter must be an array or an object that implements C
  • 如何在VMware上安装CentOS7?

    目录 一 器材准备 二 创建一个虚拟机 三 安装Centos7系统 一 器材准备 1 Centos7及以上版本的iso镜像 链接 centos7镜像 提取码 ao3n 2 VMware15及以上版本的软件工具包 链接 VMware16安装包
  • 并行运算出现“_pickle.PicklingError: Can‘t pickle <function calculate at 0x000001ADE8C2EEE0>”

    尝试将需要并行运算的函数同并行运算结构体分开进行并行运算 例 创建一个名为calculate py的新文件 并将以下代码粘贴到该文件中 def calculate num return num 2 主程序的代码如下 import multi
  • 如何优化代码中大量的if/else,switch/case?

    前言 随着项目的迭代 代码中存在的分支判断可能会越来越多 当里面涉及到的逻辑比较复杂或者分支数量实在是多的难以维护的时候 我们就要考虑下 有办法能让这些代码变得更优雅吗 正文 使用枚举 这里我们简单的定义一个表示状态的枚举 public e
  • qq的Tencent://Message/协议

    QQ即时聊天代码 为QQ号码 以前这样写 http wpa qq com msgrd V 1 Uin Site hexun com ngdao Menu yes 现在这样写 tencent message uin Site hexun co
  • upload-master-pass8

    第八关 又是黑名单绕过 但是没有处理 DATA 引用某位大佬的解释就是 php在window的时候如果文件名 DATA 会把 DATA之后的数据当成文件流处理 不会检测后缀名 且保持 DATA 之前的文件名 他的目的就是不检查后缀名 验证
  • ASCII、Unicode、UTF-8、GBK、全角/半角

    入门小菜鸟 希望像做笔记记录自己学的东西 也希望能帮助到同样入门的人 更希望大佬们帮忙纠错啦 侵权立删 目录 一 定义 1 ASCII 2 Unicode 3 UTF 8 4 GB2312 5 GBK 6 u和 x 7 全角和半角 二 相互
Powered by Hwhale