Python - 字符串编解码
文章目录
- 关于编解码
- 编码的种类
- 代码实现编解码
- 常用字符串--字节转换
- 字节样式字符串 编解码
- url 编解码
- 字节相加
关于编解码
编码/解码本质上是一种映射
字符a
用 ascii 编码则是65,计算机中存储为 00110101。
a
需要解码为 00110101,才能被计算机使用。
编码:真实字符与二进制串的对应关系,真实字符 → 二进制串
解码:二进制串与真实字符的对应关系,二进制串 → 真实字符
如:
UTF-8 --> decode 解码 --> Unicode
Unicode --> encode 编码 --> GBK / UTF-8 等
编码的种类
- ASCII 占 1个字节,只支持英文
- GB2312 占2个字节,支持 6700+ 汉字
- GBK GB2312的升级版,支持 21000+ 汉字,中文2个字节。
- Unicode 2-4 字节, 已经收录 136690 个字符
- UTF-8:使用 1、2、3、4 个字节表示所有字符;
优先使用1个字符、无法满足则使增加一个字节,最多 4个字节。
英文占1个字节、欧洲语系占2个、东亚占 3个,其它及特殊字符占 4个,中文 3个字节。 - UTF-16:使用2、4个字节表示所有字符;
优先使用2个字节,否则使用4个字节表示。
ASCII 以 1字节 8个bit位表示一个字符,首位全是0,表示的字符集明显不够
unicode 编码系统是为表达任意语言而设计的,为了防止存储上的冗余(比如,对应ascii码的部分),其采用了变长编码,但变长编码给解码带来了困难,无法判断是几个字节表示一个字符
UTF-8 是针对unicode变长编码设计的一种前缀吗,根据前缀可判断是几个字节表示一个字符
Python 中的默认编码
- Python2 中默认是ASCII码
- Python3 中默认是unicode
代码实现编解码
常用字符串–字节转换
str = '你好' # b'\xe4\xbd\xa0\xe5\xa5\xbd' gbk:b'\xc4\xe3\xba\xc3'
str = 'abc' # b'abc'
str = 'นั่ง' # b'\xe0\xb8\x99\xe0\xb8\xb1\xe0\xb9\x88\xe0\xb8\x87'
str = 'นั่' # b'\xe0\xb8\x99\xe0\xb8\xb1\xe0\xb9\x88'
# str = 2 # 'int' object has no attribute 'encode'
str = '*' # b'*'a = str.encode('UTF-8')
a = str.encode('gbk')# 中文不支持 ascii 编码
>>> str = 'abc123'
>>> str.encode('ascii')
b'abc123'
字节样式字符串 编解码
bytes 样式类型 主要在于使用 raw_unicode_escape
编码
unicode 样式类型 主要在于使用 unicode_escape
编码
str = '\xe5\x90\x8d\xe7\xa7\xb0'
str_b = str.encode("raw_unicode_escape") # b'\xe5\x90\x8d\xe7\xa7\xb0'
str_origin = str_b.decode("utf-8") # '名称'
>>> u_code = 'abc你好123'.encode('unicode-escape') >>> u_code, type(u_code)
(b'abc\\u4f60\\u597d123', <class 'bytes'>)>>> u_str = 'abc\u4f60\u597d123'
>>> u_b = u_str.encode('unicode-escape')
>>> u_b, type(u_b)
(b'abc\\u4f60\\u597d123', <class 'bytes'>)... str2 = u_b.decode('utf-8')
>>> str2, type(str2)
('abc\\u4f60\\u597d123', <class 'str'>)>>> str3 = str2.encode()
>>> str3, type(str3)
(b'abc\\u4f60\\u597d123', <class 'bytes'>)>>> str4 = str3.decode('unicode-escape')
>>> str4, type(str4)
('abc你好123', <class 'str'>)
url 编解码
使用 urllib 库
参考: https://www.cnblogs.com/miaoxiaochao/p/13705936.html
str = '你好'
a = urllib.parse.quote(str)
print(a) # %E4%BD%A0%E5%A5%BDb = urllib.parse.unquote(a) # 你好
字节相加
b = b''
b += b'a'
b += b' b'print(b) b'a b'
print (b.decode('utf-8')) # a b
伊织 2022-06-24(五)
Python - 字符串编解码相关推荐
- Python进阶8——字典与散列表,字符串编解码
Python用散列表来实现字典,散列表就是稀疏数组(数组中有空白元素),散列表中的元素叫做表元,字典的每个键值对都占用一个表元,一个表元分成两个部分,一个是对键的应用,另一个是对值的引用,因为表元的大 ...
- python 字符串 编码 解码_Python 字符串编解码研究
Python 2.X 在输入汉字和特殊字符的时候,经常遇到编码解码的问题,究其原因,编译器默认将文件当做ascii编码,因此要正确的实现编解码的转换,需要进行一些设置. 首先让我们来了解几个概念. 文 ...
- python字符编码解码,文件编码解码。
一.几个特别容易混淆和弄不清的概念 参考http://www.cnblogs.com/guosq/p/6378639.html 在python中,编码解码其实是不同编码系统间的转换,默认情况下,转换目 ...
- iconv-lite,JS字符串编解码工具
编码:字符串到二进制数据转换的过程.解码:二进制数据到字符串转换的过程. iconv-lite: Pure JS character encoding conversion 多种类型字符串(包括gbk ...
- 【转】python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode...
原文网址:http://blog.csdn.net/trochiluses/article/details/16825269 摘要:在进行python脚本的编写时,如果我们用python来处理网页数据 ...
- python文件操作解码_python基础3之文件操作、字符编码解码、函数介绍
内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...
- python基础3之文件操作、字符编码解码、函数介绍
内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...
- python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍
内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...
- python 字符编码问题
字符编码 一.字符编码的演进 ASCII GB2312 GBK1.0 GB18030 Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言.跨平台 ...
最新文章
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
- 从事软件测试为什么要学自动化?
- Android判断CPU是否为x86,如何判断. NET 程序集是否编译为 x86,x64或者任何 CPU_visual-studio_开发99编程知识库...
- Android 线程管理
- 关于web.xml3.0启动报错
- Angular - 如何在页面加载后马上做初始化
- 文献记录(part95)--CCMS: A nonlinear clustering method based on crowd movement and selection
- [C++11]decltype在泛型编程中的使用举例
- mysql数据库的体系结构包括什么组件_MySQL数据库的体系结构
- 第13章 使用ADO.NET访问数据库
- linux安装memcached(不错)
- python索引右往左_左手用R右手Python系列5——数据切片与索引
- (转)LuaPlus C++ 函数互调
- 【转载】一些重要的java知识点:JVM内存模型和结构
- 华为ENSP远程登录
- Java 在Word中创建表格
- Arduino ESP8266利用SPIFFS上传文件和查看文件
- 化工机械基础期末复习题及答案
- 【python】使用pyautogui进行屏幕捕捉实现自动化操作
- 开启人工智能的大门,引领AI时代