关于 Python3 的编码

简介:

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

wKiom1mIEXfReh9TAAA5ATqexB8639.png

2、汉字与 gbk 十六进制(二进制)之间的转换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 汉字转十六进制
>>>  '你好' .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'  %  for  in  '你好' .encode( 'gbk' ) ] ).strip()
'C4 E3 BA C3'
 
# 十六进制字符串转汉字
>>> bytes.fromhex( 'C4E3BAC3' ).decode( 'gbk' )
'你好'
>>> bytes.fromhex( 'C4 E3 BA C3' ).decode( 'gbk' )
'你好'

3、汉字与 unicode 编码之间的转换。

1
2
3
4
5
6
7
8
>>>  '你好' .encode( 'unicode_escape' )
b '\\u4f60\\u597d'
>>> b '\\u4f60\\u597d' .decode(( 'unicode_escape' ))
'你好'
>>>  print (b '\\u4f60\\u597d' )
b '\\u4f60\\u597d'
>>>  print (u '\u4f60\u597d' )
你好

4、bytes 相关

1
2
3
4
5
6
7
8
9
10
# bytes 对象转十六进制字符串
>>>  "%02X"  %  ord (b '\xff' )
'FF'
# bytes 转 int
>>>  ord (b '\xff' )
255
 
# int 转 bytes
>>> bytes([ 255 ])
b '\xff'

5、关于utf8的bom头。(Python3下)

1
2
3
4
5
6
7
8
9
>>>  import  codecs
>>> codecs.BOM_UTF8
b '\xef\xbb\xbf'
>>>  len (b '\xef\xbb\xbf' )
3
>>> codecs.BOM_UTF8.decode( 'utf8' )
'\ufeff'
>>>  len ( '\ufeff' )
1

6、Python3 有哪些编码:Standard EncodingsPython Specific Encodings 。

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

1
2
3
>>>  from  encodings.aliases  import  aliases
>>>  for  in  aliases:
     print ( '%s: %s'  %  (k, aliases[k]))

8、验证是不是有效编码。

1
2
3
4
5
6
7
8
9
10
11
12
13
>>>  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

9、标准化 encoding。

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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'


相关阅读:

1、Unicode Tips

2、Python3 处理 gb18030 乱码


*** walker ***


本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1954215如需转载请自行联系原作者

RQSLT
相关文章
|
7月前
|
存储 Python
Python文件编码概念详解
Python文件编码概念详解
62 1
|
3月前
|
Python
python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
这篇文章介绍了如何使用Python的第三方库chardet来检测字符串的编码类型,包括ASCII、GBK、UTF-8和日文编码的检测示例。
148 6
|
3月前
|
Python
Python 中如何指定 open 编码为ANSI
Python 中如何指定 open 编码为ANSI
61 1
|
4月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
262 1
|
4月前
|
开发者 Python
Python编码风格
Python编码风格
29 1
|
5月前
|
Python
11个提升Python列表编码效率的高级技巧
Python中关于列表的一些很酷的技巧
56 1
|
4月前
|
JSON 数据库 开发者
FastAPI入门指南:Python开发者必看——从零基础到精通,掌握FastAPI的全栈式Web开发流程,解锁高效编码的秘密!
【8月更文挑战第31天】在当今的Web开发领域,FastAPI迅速成为开发者的热门选择。本指南带领Python开发者快速入门FastAPI,涵盖环境搭建、基础代码、路径参数、请求体处理、数据库操作及异常处理等内容,帮助你轻松掌握这一高效Web框架。通过实践操作,你将学会构建高性能的Web应用,并为后续复杂项目打下坚实基础。
136 0
|
5月前
|
存储 缓存 Python
python中小数据池和编码
python中小数据池和编码
59 3
|
5月前
|
缓存 Java Unix
python中内存管理等10个编码习惯
【7月更文挑战第3天】本文涵盖了Python编程中的变量管理、模块导入、命令行参数、内存管理和面向对象设计的10个关键概念。
50 0
python中内存管理等10个编码习惯
|
6月前
|
自然语言处理 Python
Python编码问题
Python编码问题是指在处理文本时,由于编码不一致导致程序不能正确处理文本的问题。在Python中,编码问题主要有两种情况:文件编码问题和字符串编码问题。
68 7