博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python字符串的编码问题
阅读量:5304 次
发布时间:2019-06-14

本文共 1488 字,大约阅读时间需要 4 分钟。

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431664106267f12e9bef7ee14cf6a8776a479bdec9b9000

由以上内容的思考:

python中字符串的默认编码是Unicode编码,但是在实际运用中市场需要Unicode和UTF-8(包含了ASCII)之间的转换。

ASCII编码:一个字符由1个byte(8位二进制/8bits)表示;

Unicode编码:一个字符由2个byte表示;

UTF-8编码:一个字符由1个或者多个byte表示,“可变长编码”,向下覆盖了ASCII编码。

编码格式就是一张带角标的字符表,区别是角标的表示位数。

如果知道字符的整数编码(默认都是Unicode编码),还可以用十六进制这么写str

#\u表示Unicode编码,4e2d和6587位16进制数,2位表示一个byte,Unicode有4位表示2个字节>>> '\u4e2d\u6587''中文'

但是要传输和存储动作时,需要将Unicode码转化为字节码bytes数据类型,这一数据类型就是按照ASCII和UTF-8编码的,在纯英文和数字及普通字符时就是ASCII编码格式。

其实保存到磁盘时所以一般都选UTF-8编码格式,是指在保存和读取时使用该格式编码和解码,我们写的python代码直接使用Unicode(编辑的时候实际上都存储在内存中)。

eg:记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:

rw-file-utf-8

bytes数据类型有固定表示:b

x = b'ABC'

对于理解这里需要知道,使用byte数据类型就是读取或者写入一个一个字节,计算机就是这么干的。

编码:

>>> 'ABC'.encode('ascii')b'ABC'>>> '中文'.encode('utf-8')b'\xe4\xb8\xad\xe6\x96\x87'>>> '中文'.encode('ascii')Traceback (most recent call last):  File "
", line 1, in
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

解码:

>>> b'ABC'.decode('ascii')'ABC'>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')'中文'

1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。

在操作字符串时,我们经常遇到strbytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对strbytes进行转换。

由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上:

# -*- coding: utf-8 -*-

 

转载于:https://www.cnblogs.com/xuhaojun/p/9163467.html

你可能感兴趣的文章
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
微信小程序之随笔
查看>>
ios蓝牙详解
查看>>
React Native在Android平台运行gif的解决方法转载
查看>>
Mybatis RowBounds 是逻辑分页
查看>>
hdu 3341(ac自动机+状态压缩)
查看>>
51单片机之蓝牙遥控小车_效果展示+单片机知识+完整蓝牙电车代码
查看>>
Sql Server中REPLACE函数的使用
查看>>
SqlServerl的行转列
查看>>
JavaScript跨域总结与解决办法
查看>>
Hover功能
查看>>
[LeetCode] Jump Game II
查看>>
js千分位处理
查看>>
js常用的方法
查看>>
Mac---------三指拖移
查看>>
关于VMare中安装Ubuntu的一些说明
查看>>
七、K3 WISE 开发插件《工业单据老单插件中获取登陆用户名》
查看>>
字符串类型的相互转换
查看>>
图片编辑的利器(介绍韩国免费图片工具PhotoScape)
查看>>
Python基础第十一天:递归函数
查看>>