返回顶部
首页 > 资讯 > 后端开发 > Python >关于 Python3 的编码
  • 194
分享到

关于 Python3 的编码

2023-01-31 08:01:27 194人浏览 八月长安

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

摘要

python3 中 str 与 bytes 的转换:The bytes/str dichotomy in python 3字符与 Unicode 编号之间的转换# 字符转 Unicode 编号 >>> ord('

  • 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 ***


--结束END--

本文标题: 关于 Python3 的编码

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

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

猜你喜欢
  • 关于 Python3 的编码
    Python3 中 str 与 bytes 的转换:The bytes/str dichotomy in Python 3字符与 Unicode 编号之间的转换# 字符转 Unicode 编号 >>> ord('...
    99+
    2023-01-31
  • 关于 Python3 ThreadPoo
    【背景】    截至 Python 3.6.6,concurrent.futures.ThreadPoolExecutor 中用的都是无·界队列,在生产速度大于消费速度时,可能会耗光系统资源,希望找到一种方式避免这种情况。【方案一】继承 T...
    99+
    2023-01-31
    ThreadPoo
  • 关于 python3 下 mysqld
    long long ago 刚接触 python 的时候, 就遇到过 mysqldb 的诡异问题, 奈何国内博客上写的都是 python2 下的解决方法, 无奈只好不停查阅 那时的我得出的结论: mysqldb 已经不再支持 pytho...
    99+
    2023-01-31
    mysqld
  • 关于Python中的编码规范
    目录编码规范1、分号2、命名3、行长度4、缩进5、空行6、空格7、类8、块注释和行注释9、字符串10、导包【总结】1.命名2.空白3.语句4.注释编码规范 Python 编码规范重要...
    99+
    2023-05-15
    Python规范 Python编码规范
  • Python3的URL编码解码
    博主最近在用python3比较强大的Django开发web的时候,发现一些url的编码问题,在浏览器提交请求api时,如果url中包含汉子,就会被自动编码掉。呈现的结果是 ==> %xx%xx%xx。如果出现3个百分号为一个原字符则...
    99+
    2023-01-31
    URL
  • 关于Python2与python3共存的
      py -2与py -3分别指定运行python2和python3。  py -2 -m pip(或pip2)和py -3 -m pip(或pip3)指定运行pip2和pip3。  python和pip命令仍然可以使用,对应版本2还是3则...
    99+
    2023-01-31
  • Python3的编码问题
    ​介绍Python3中的编码问题前,第一个段落对字节、ASCII​与Unicode与UTF-8等进行基本介绍,如果不对这几种编码犯头晕,可直接跳过。 ASCII​与Unicode与UTF-8与GBK 首先从老大哥说起。跟很多人一样,...
    99+
    2023-01-31
  • 关于windos10环境下编译python3版pjsua库的问题
    环境: windows10_x64 python3.9_x64 pjsua-2.10 vs2015 pjsua编译参考这里: https://www.jb51.net/article...
    99+
    2024-04-02
  • JAVA关于Unicode编码问题
    在Java中,Unicode编码是用来表示字符的标准编码方式。Java中的字符类型char是基于Unicode编码的,它使用16位(...
    99+
    2023-08-19
    Java
  • js中关于base64编码的问题
    目录关于base64编码的问题1. 使用 Buffer对象2. 使用base64js.js3. js中类似java中byte强转int类型手把手教你js实现base64编码规则总结关...
    99+
    2023-02-08
    js中base64编码 js base64编码 base64编码问题
  • python3下关于copy和deepc
         很多人在学习python3的时候,在字典部分copy和deepcopy感到很困惑,现在针对这两个方法进行区分,即一种是浅复制(copy),一种是深度复制(deepcopy)。开头先下个结论我们日常所说的复制(自己在电脑硬盘上的复制...
    99+
    2023-01-31
    copy deepc
  • Python3 字符编码
    原文出处:http://www.cnblogs.com/284628487a/p/5584714.html编码字符串是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才...
    99+
    2023-01-31
    字符
  • 【Python3】02、python编码
    一、ASCII、Unicode和UTF-8的区别       因为字符编码的问题而苦恼不已,于是阅读了大量的博客,再进行了一定的测试,基本搞清楚了编码问题的前因后果。1、字符集和字符编码      计算机中储存的信息都是用二进制数表示的;而...
    99+
    2023-01-31
    python
  • Python中,关于读取文件编码解码的问
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xb1 in position 94: illegal multibyte sequence 有时候用o...
    99+
    2023-01-31
    文件 Python
  • 关于base64编码和解码的js工具函数
    目录base64编码和解码的js工具函数前端实现base64解码编码方法一:btoa 和 atob方法二:下包方法三:js实现总结base64编码和解码的js工具函数 上代码 // ...
    99+
    2023-02-08
    关于base64编码 关于base64解码 js工具函数
  • Java中关于字符串的编码方式
    目录字符串的编码方式idea中默认的字符串编码方式为utf-8utf-8和GBK中字符串所占用的字节数设置字符串编码、转码 UTF-8UTF-16UTF-32java中编码...
    99+
    2024-04-02
  • PYTHON3编码再探究
    原文请戳本文大概需要10分钟看完1 看一段简单代码要求:Linux编辑器,python3版本vim test1.py# test1.py内容:import sys, locales = "王佳"print(s)print(sys.getde...
    99+
    2023-06-02
  • python3中关于时间格式的操作
    在写python时,很多时候需要用的时间函数,如:记录当前时间,以时间命名文件,或是比较时间的先后等,这里记录一下关于常用时间模块的方法。 环境:ubuntu16.04python3.5.2 用到两个模块:time 和 datetime ...
    99+
    2023-01-31
    操作 格式 时间
  • python3的url编码和解码,自定义
    因为很多时候要涉及到url的编码和解码工作,所以自己制作了一个类,废话不多说 码上见!# coding:utf-8 import urllib.parse class Urlchuli(): """Url处理类,需要传入两个实...
    99+
    2023-01-31
    自定义 url
  • 关于MySQL实现指定编码遇到的坑
    写在前面 环境:MySQL5.7+,MySQL数据库字符编码实现为utf8,表也为utf8 场景:微信授权获取用户信息(包括昵称)并保存到数据库,有的用户成功了,少数用户却失败了 那...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作