返回顶部
首页 > 资讯 > 后端开发 > Python >对python3编码那些事的小小总结
  • 700
分享到

对python3编码那些事的小小总结

2023-01-31 08:01:05 700人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

一、 了解一下编码的发展。1、 计算机只能处理数字,如果需要处理文本,需要先将文本转换为数字。因为计算机是美国梆子发明的,所以他们发明了最早的编码--ASCII编码,也就是将他们的大小写字符数字和一些符号编码得到计算机中。比如A的编

一、 了解一下编码的发展。
1、 计算机只能处理数字,如果需要处理文本,需要先将文本转换为数字。因为计算机是美国梆子发明的,所以他们发明了最早的编码--ASCII编码,也就是将他们的大小写字符数字和一些符号编码得到计算机中。比如A的编码是65。
2、 随着计算机在中国发展起来,拿ASCII去处理中文,显然是不够的,因为英文需要一个字节处理,而中文是需要两个字节。为了满足需求我们中国发明了自己的编码GB2312。将中文编进去。
3、 我们中国如此,世界上那么多语言岂不是每种语言都需要一种编码标准,如果一个文本中有多种语言,到时候产生的结果就是出现乱码。
4、 为顺应发展,比较叼的Unicode编码出生了,这个东西将所有的语言都统一到一套编码中。这样就不会再出现乱码的问题。虽然这个东西够强大,但是却有一个不能小觑的缺点。相比于ASCII编码要多出一倍的储存空间。例如:A ascii:65 二进制:01000001 unicode:00000000 01000001
5、 所以秉承着节约的原则,UTF-8应运而生,好处编码可变长。例如A的UTF-8:01000001,可以将unicode编码中的前面的零节约掉。
二、 在计算机 系统中通用编码的工作方式
1、 当我们编辑文档的时候,读取文档内容将UTF-8字符转换为unicode字符到内存中。因为这里需要显示,为了避免乱码,使用通用的Unicode编码。
2、 当编码编辑完成后,再将Unicode的编码转换为UTF-8保存到文件中。因为这里是需要存入磁盘中的,为节约储存空间,使用可变编码长度的UTF-8编码。
三、 python3字符编码
python字符串类型是str,在内存中以Unicode表示。
1、 如果需要在网络上传输,或者保存到存储设备上,就需要将str变成以字节为单位的bytes。可以使用encode()方法。通过第一大点的了解,我们知道Unicode表示的str可以通过ASCII和utf-8编码转换。但是转换中文的时候,一定使用utf-8,因为含有中文的str无法用ASCII编码,超出了ASCII编码的范围。例如:
对python3编码那些事的小小总结
2、 如果我们从网络上或磁盘上读取数据,就是将bytes变为str。可以使用decode()方法。
对python3编码那些事的小小总结
通过上述了解,可以看出,utf-8编码,不管是读取数据,还是传输数据都不会出错,所以很多情况下utf-8使用的更为广泛一些。

四、 解析我实际遇到的问题
使用Socket模块编写通信的脚本,原服务端:

#!/usr/bin/python3
import socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('',6000))
s.listen(1)
client,addr=s.accept()
print ("Connected by",addr)
client.send("welcome")
text=client.recv(1024)
print(text)
client.close()
s.close()

原客户端:

#!/usr/bin/Python3
import socket

c=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
c.connect(("192.168.80.128",6000))
ans=c.recv(1024)
print(ans)
c.send("hello")
c.close()

执行结果
对python3编码那些事的小小总结
send()方法用来传递数据,将hello传递给服务端。
错误提示需要将str类型的字符串转换为bytes。在我们传递数据的时候应该先将str转换为bytes类型的数据方可。使用encode(‘utf-8’)或encode(‘ascii’);同时服务端的send()方法传递的数据也应该转换一下。
服务端修改代码:

client.send("welcome".encode('utf-8'))

客户端修改代码:

c.send("hello".encode('utf-8'))

修改后执行结果:
对python3编码那些事的小小总结
对python3编码那些事的小小总结
执行成功。
执行过程中,str被转换为bytes传递给对方。因为这里传递的是字母,内容上看不出是bytes,但是字符串前有个字母b,表示bytes。如果传递的是中文:
对python3编码那些事的小小总结
因为我们将str转换为了bytes。所以当我们接受数据的时候,应当将bytes转换为str
服务端修改代码:
text=client.recv(1024).decode('utf-8')
客户端修改代码:
ans=c.recv(1024).decode('utf-8')
执行结果:
对python3编码那些事的小小总结
总结完毕!!!

--结束END--

本文标题: 对python3编码那些事的小小总结

本文链接: https://lsjlt.com/news/192741.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 对python3编码那些事的小小总结
    一、 了解一下编码的发展。1、 计算机只能处理数字,如果需要处理文本,需要先将文本转换为数字。因为计算机是美国梆子发明的,所以他们发明了最早的编码--ASCII编码,也就是将他们的大小写字符数字和一些符号编码得到计算机中。比如A的编...
    99+
    2023-01-31
  • Vue3.2.x中的小技巧及注意事项总结
    目录前言小技巧关于减少.value的使用关于减少import导入语句关于在script setup中声明组件名字注意事项关于响应式的问题模板循环中加不加key的问题总结前言 vue3...
    99+
    2024-04-02
  • 2020将至,谈谈中小企业创业的那些事儿
    2019正迎来尾声,在创业这场轰轰烈烈的旅途中,有的人名利双收,有的人饱受非议。一入创业深似海,在创业赛道上,很多公司完成了从0到1,却死在从1到100的路上。而小程序的出现,让移动互联网创业走向低门槛。正...
    99+
    2024-04-02
  • MySQL索引知识的一些小妙招总结
    一、索引基本知识 1.1 索引的优点 大大减少了服务器需要扫描的数据量,加快数据库的检索速度 帮助服务器避免排序和临时表 将随机io变成顺序io 1.2 索引的用处 速查找...
    99+
    2022-05-23
    mysql 索引 mysql索引结构 mysql索引技巧
  • Kotlin开发的一些实用小技巧总结
    前言随着Google I/O大会的召开,Google宣布将支持Kotlin作为Android的开发语言,最近关于Kotlin的文章、介绍就异常的活跃。本文主要给大家介绍了关于Kotlin开发的一些实用小技巧,分享出来供大家参考学习,下面话不...
    99+
    2023-05-30
    kotlin 实用技巧
  • 关于MySQL自增ID的一些小问题总结
    下面这几个小问题都是基于 InnoDB 存储引擎的。 1. ID最大的记录删除后,新插入的记录ID是什么 例如当前表中有ID为1,2,3三条记录,把3删除,新插入记录的ID从哪儿开始? 答案: 从4开始。...
    99+
    2024-04-02
  • js对url进行编码解码的三种方式总结
    目录第一种:escape 和 unescape第二种:encodeURI 和 decodeURI第三种:encodeURIComponent 和 decodeURIComponent...
    99+
    2023-02-14
    js url编码解码 url编码和解码 js转码和解码
  • 有哪些编写短小精炼的JS代码小技巧
    本篇内容主要讲解“有哪些编写短小精炼的JS代码小技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些编写短小精炼的JS代码小技巧”吧!短路Javascrip...
    99+
    2024-04-02
  • Android编程中延后处理事件的方法小结
    本文实例讲述了Android编程中延后处理事件的方法。分享给大家供大家参考,具体如下: 一、Handler和TimerTask相结合 1、首先定义TimerTask Time...
    99+
    2022-06-06
    小结 方法 事件 Android
  • 编写JavaScript代码的小技巧有哪些
    小编给大家分享一下编写JavaScript代码的小技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1 Array.inc...
    99+
    2024-04-02
  • 端午小长假,总结了这些简单的MySQL命令
    端午小长假好快就结束了,我相信好多小伙伴和我一样,感觉还没有休息够,就结束了,休息的有点赶脚。 我在厂家之余为大家总结了一些关于MySQL的一些内容,现在我分享给大家。 对于初学MySQL的童鞋来说,可能...
    99+
    2024-04-02
  • 中小企业对Spring Cloud微服务架构实践经验总结的一些思考
    Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多。在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉 Spring ...
    99+
    2023-06-02
  • MySQL MyISAM引擎和InnoDB引擎对于单表大小限制的总结
    MyISAM引擎: 默认情况下,MySQL创建的MyISAM表允许的最大尺寸为4GB。你可以使用SHOW TABLE STATUS语句或myisamchk -dv tbl_name检查表的最大尺寸。&nbs...
    99+
    2024-04-02
  • SQL Server:存储过程中编写事务处理的方法小结
    原文出处: http://www.jb51.net/article/80636.htm本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码。 1. 常见写法:在编写SQL Serv...
    99+
    2024-04-02
  • Xcode中代码注释编写的一些小技巧
    目录前言Objective-C的代码注释Swift的代码注释Objective-C和Swift的注释风格现在已经统一快速修改注释参考文档总结前言 码农总是在搬砖,日复一日,年复一年...
    99+
    2022-05-31
    xcode 代码 注释
  • 编写现代JavaScript代码的小技巧有哪些
    这篇文章主要介绍“编写现代JavaScript代码的小技巧有哪些”,在日常操作中,相信很多人在编写现代JavaScript代码的小技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • 有哪些提高Python编码水平的小技巧
    本篇内容介绍了“有哪些提高Python编码水平的小技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 分割序列常见的序列类型有列表、元组...
    99+
    2023-06-16
  • Python编程中实现迭代器的一些技巧小结
    yield实现迭代器 如引言中的描述,实现一个可迭代的功能要是每次都手动实现iter,next稍稍有点麻烦,所需的代码也是比较客观。在python中也能通过借助yield的方式来实现一个迭代器。yield有...
    99+
    2022-06-04
    小结 迭代 技巧
  • Linux下9种优秀的代码比对工具推荐小结
    在我们编写代码的时候,我们经常需要知道两个文件之间,或者同一个文件不同版本之间有什么差异性。在 Windows 下有个很强大的工具叫作 BeyondCompare ,那在 Linux 下需要用到什么工具呢? 本文介绍...
    99+
    2022-06-03
    Linux 代码比对工具 Linux 码对比工具
  • 微信小程序实时定位的要做的那些事,你学废了吗?(附示例)
    ✅作者简介:大家好我是瓜子三百克,一个非科班出身的技术程序员,还是喜欢在学习和开发中记录笔记的博主小白! 📃个人主页:瓜子三百克的主页 🔥系列专栏:OC语法 &#...
    99+
    2023-09-03
    微信小程序 小程序 实时定位
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作