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

ASCII、Unicode、UTF-8、GBK

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

目录

一、定义

1、ASCII

2、Unicode

3、UTF-8

4、GB2312

5、GBK

6、\u和\x

二、相互转化

1、str 与 ASCII

2、str与utf-8

3、str转gbk

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


一、定义

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函数对其进行转化。


二、相互转化

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]])

结果:

异常编码为: ﹒

参考:

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

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

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

http://www.lryc.cn/news/94206.html

相关文章:

  • 【安全】使用docker安装Nessus
  • 【Hadoop综合实践】手机卖场大数据综合项目分析
  • 服务器技术(三)--Nginx
  • OpenCV——总结《车牌识别》之《常用的函数介绍》
  • chatgpt赋能python:如何利用Python进行自动化办公
  • linux-2.6.22.6内核网卡驱动框架分析
  • 机器学习7:特征工程
  • coverage代码覆盖率测试介绍
  • 使用 Debian、Docker 和 Nginx 部署 Web 应用
  • Redis原理 - 内存策略
  • 【计算机网络】IP 地址处理函数
  • 9i物联网浏览器(cef_114.2.110114.2.100支持H264视频)WinForm-CefSharp114(5735)视频版本体验
  • 如何在本地运行一个已关服但具有客户端的游戏
  • C语言编程—预处理器
  • 使用 Maya Mari 设计 3D 波斯风格道具(p1)
  • Redis分布式问题
  • synchronized原理
  • 10G光模块能兼容千兆光口吗
  • css 显示省略号 和 动态显示省略号
  • LeetCode 1253. 重构 2 行二进制矩阵
  • 【八股】【C++】内存
  • 数据库G等待
  • PCB封装设计指导(一)基础知识
  • Flask框架之Restful--介绍--下载--基本使用
  • 2023年上海市浦东新区网络安全管理员决赛理论题样题
  • SQL语言的四大组成部分——DCL(数据控制语言)
  • ChatGPT新功能曝光:可记住用户信息、上传文件和工作区
  • 【Unity编辑器扩展】(三)PSD转UGUI Prefab, 一键拼UI解放美术/程序(完结)
  • SpringBoot开发Restful风格的接口实现CRUD功能
  • 【Servlet学习三】实现一个内存版本的简易计算器~