1、Python3 中 str 与 bytes 的转换:The bytes/str dichotomy in Python 3
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'
%
x
for
x
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 Encodings、Python Specific Encodings 。
7、打印编码及别名。(Get a list of all the encodings Python can encode to)
1
2
3
|
>>>
from
encodings.aliases
import
aliases
>>>
for
k
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'
|
相关阅读:
*** walker ***
本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1954215如需转载请自行联系原作者
RQSLT