我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关于 Python3 的编码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关于 Python3 的编码

  • Python3 中 str 与 bytes 的转换:The bytes/str dichotomy in Python 3

wKiom1mIEXfReh9TAAA5ATqexB8639.png

  • 字符与 Unicode 编号之间的转换

# 字符转 Unicode 编号
>>> ord('A')
65
>>> hex(ord('A'))
'0x41'

>>> ord('你')
20320
>>> hex(ord('你'))
'0x4f60'

>>> '你好'.encode('unicode_escape')
b'\\u4f60\\u597d'

# Unicode 编号转字符
>>> chr(65)
'A'
>>> chr(0x41)
'A'

>>> chr(20320)
'你'
>>> chr(0x4f60)
'你'

>>> b'\\u4f60\\u597d'.decode(('unicode_escape'))
'你好'
>>> print(b'\\u4f60\\u597d')
b'\\u4f60\\u597d'
>>> print(u'\u4f60\u597d')
你好
  • 汉字与 gbk 十六进制(二进制)之间的转换。

# 汉字转十六进制
>>> '你好'.encode('gbk')
b'\xc4\xe3\xba\xc3'

# 十六进制转汉字
>>> b'\xc4\xe3\xba\xc3'.decode('gbk')
'你好'

# 汉字转十六进制字符串
>>> ''.join( [ '%02X' % x for x in '你好'.encode('gbk') ] ).strip()
'C4E3BAC3'
>>> ' '.join( [ '%02X' % x for x in '你好'.encode('gbk') ] ).strip()
'C4 E3 BA C3'

# 十六进制字符串转汉字
>>> bytes.fromhex('C4E3BAC3').decode('gbk')
'你好'
>>> bytes.fromhex('C4 E3 BA C3').decode('gbk')
'你好'
  • 数字与十六进制(二进制)之间的转换

# 数字转十六进制字符串
>>> hex(21)
'0x15'
>>> hex(21)[2:]
'15'

# 十六进制字符串转数字
>>> int('0x15', 16)
21
>>> int('15', 16)
21

# 数字转八进制字符串
>>> oct(21)
'0o25'
>>> oct(21)[2:]
'25'

# 八进制字符串转数字
>>> int('0o25', 8)
21
>>> int('25', 8)
21

# 数字转二进制字符串
>>> bin(5)
'0b101'
>>> bin(5)[2:]
'101'

# 二进制字符串转数字
>>> int('0b101', 2)
5

>>> int('101', 2)
5
  • bytes 相关

# bytes 对象转十六进制字符串
>>> "%02X" % ord(b'\xff')
'FF'
>>>  ''.join(["%02X" % i for i in b'\xe4\xbd\xa0\xe5\xa5\xbd'])
'E4BDA0E5A5BD'

# bytes 转 int
>>> ord(b'\xff')
255

# int 转 bytes
>>> bytes([255])
b'\xff'
  • bit 相关(需使用第三方包 bitarray)

# 字符串转 01 串(默认 endian 是大端)
>>> arr = bitarray()
>>> arr.frombytes('你好'.encode('utf8'))
>>> arr.to01()
'111001001011110110100000111001011010010110111101'

# 01 串转字符串
>>> bitarray('111001001011110110100000111001011010010110111101').tobytes().decode('utf8')
'你好'
  • 关于utf8的bom头。(Python3下)

>>> import codecs
>>> codecs.BOM_UTF8
b'\xef\xbb\xbf'
>>> len(b'\xef\xbb\xbf')
3
>>> codecs.BOM_UTF8.decode('utf8')
'\ufeff'
>>> len('\ufeff')
1
  • Python3 有哪些编码:Standard Encodings、Python Specific Encodings 。

  • 打印编码及别名。(Get a list of all the encodings Python can encode to)

>>> from encodings.aliases import aliases
>>> for k in aliases:
	print('%s: %s' % (k, aliases[k]))
  • 验证是不是有效编码。

>>> import codecs

>>> codecs.lookup('utf8')    #有效
<codecs.CodecInfo object for encoding utf-8 at 0x13fb4f50828>

>>> codecs.lookup('utf-;8')    #有效
<codecs.CodecInfo object for encoding utf-8 at 0x13fb4f50a08>

>>> codecs.lookup('utf88')    #无效
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    codecs.lookup('utf88')
LookupError: unknown encoding: utf88
  • 标准化 encoding。

>>> import encodings
>>> encodings.normalize_encoding('utf-;8')
'utf_8'

对应 C 代码为:unicodeobject.c 中的 _Py_normalize_encoding 函数。

  • sys/locale 模块中与编码相关的方法。(Python字符编码详解)

import sys
import locale
 
# 当前系统所使用的默认字符编码
>>> sys.getdefaultencoding()
'utf-8'
 
# 用于转换 Unicode 文件名至系统文件名所使用的编码
>>> sys.getfilesystemencoding()
'utf-8'
 
# 获取默认的区域设置并返回元组(语言, 编码)
>>> locale.getdefaultlocale()
('zh_CN', 'cp936')
 
# 返回用户设定的文本数据编码
# 文档提到this function only returns a guess
>>> locale.getpreferredencoding()
'cp936'
  • 字符串反转

>>> line = '0123456789'
>>> line[::-1]
'9876543210'


【相关阅读】

  • Unicode Tips

  • Python3 处理 gb18030 乱码


*** walker ***


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关于 Python3 的编码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

关于 Python3 的编码

Python3 中 str 与 bytes 的转换:The bytes/str dichotomy in Python 3字符与 Unicode 编号之间的转换# 字符转 Unicode 编号>>> ord('A')65>>> hex(or
2023-01-31

关于 Python3 ThreadPoo

【背景】    截至 Python 3.6.6,concurrent.futures.ThreadPoolExecutor 中用的都是无·界队列,在生产速度大于消费速度时,可能会耗光系统资源,希望找到一种方式避免这种情况。【方案一】继承 T
2023-01-31

关于 python3 下 mysqld

long long ago刚接触 python 的时候, 就遇到过 mysqldb 的诡异问题, 奈何国内博客上写的都是 python2 下的解决方法, 无奈只好不停查阅那时的我得出的结论:mysqldb 已经不再支持 python3mys
2023-01-31

关于Python中的编码规范

这篇文章主要介绍了关于Python中的编码规范,一千个程序员有一千套编码规范,统一的编码规范可以提高开发效率,需要的朋友可以参考下
2023-05-15

Python3的URL编码解码

博主最近在用python3比较强大的Django开发web的时候,发现一些url的编码问题,在浏览器提交请求api时,如果url中包含汉子,就会被自动编码掉。呈现的结果是 ==> %xx%xx%xx。如果出现3个百分号为一个原字符则为utf
2023-01-31

关于Python2与python3共存的

py -2与py -3分别指定运行python2和python3。  py -2 -m pip(或pip2)和py -3 -m pip(或pip3)指定运行pip2和pip3。  python和pip命令仍然可以使用,对应版本2还是3则是根
2023-01-31

Python3的编码问题

​介绍Python3中的编码问题前,第一个段落对字节、ASCII​与Unicode与UTF-8等进行基本介绍,如果不对这几种编码犯头晕,可直接跳过。ASCII​与Unicode与UTF-8与GBK首先从老大哥说起。跟很多人一样,大学读了这么
2023-01-31

JAVA关于Unicode编码问题

在Java中,Unicode编码是用来表示字符的标准编码方式。Java中的字符类型char是基于Unicode编码的,它使用16位(2个字节)来表示一个字符。Java中的字符串类型String也是基于Unicode编码的,它可以存储任意Un
2023-08-19

js中关于base64编码的问题

这篇文章主要介绍了js中关于base64编码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-08

python3下关于copy和deepc

很多人在学习python3的时候,在字典部分copy和deepcopy感到很困惑,现在针对这两个方法进行区分,即一种是浅复制(copy),一种是深度复制(deepcopy)。开头先下个结论我们日常所说的复制(自己在电脑硬盘上的复制)就是深复
2023-01-31

Python3 字符编码

原文出处:http://www.cnblogs.com/284628487a/p/5584714.html编码字符串是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才
2023-01-31

【Python3】02、python编码

一、ASCII、Unicode和UTF-8的区别       因为字符编码的问题而苦恼不已,于是阅读了大量的博客,再进行了一定的测试,基本搞清楚了编码问题的前因后果。1、字符集和字符编码      计算机中储存的信息都是用二进制数表示的;而
2023-01-31

关于base64编码和解码的js工具函数

这篇文章主要介绍了关于base64编码和解码的js工具函数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-08

Python中,关于读取文件编码解码的问

UnicodeDecodeError: 'gbk' codec can't decode byte 0xb1 in position 94: illegal multibyte sequence 有时候用open()方
2023-01-31

PYTHON3编码再探究

原文请戳本文大概需要10分钟看完1 看一段简单代码要求:Linux编辑器,python3版本vim test1.py# test1.py内容:import sys, locales = "王佳"print(s)print(sys.getde
2023-06-02

python3中关于时间格式的操作

在写python时,很多时候需要用的时间函数,如:记录当前时间,以时间命名文件,或是比较时间的先后等,这里记录一下关于常用时间模块的方法。环境:ubuntu16.04python3.5.2用到两个模块:time 和 datetime时间戳
2023-01-31

python3的url编码和解码,自定义

因为很多时候要涉及到url的编码和解码工作,所以自己制作了一个类,废话不多说 码上见!# coding:utf-8import urllib.parseclass Urlchuli(): """Url处理类,需要传入两个实参:Urlc
2023-01-31

使用python3的base64编解码实

把写内容过程中常用的内容段记录起来,下面的资料是关于使用python3的base64编解码实现字符串的简易加密解密的内容。import base64copyright = 'Copyright (c) 2012 Doucube Inc. A
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录