生活随笔
收集整理的這篇文章主要介紹了
关于 Python3 的编码
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#?字符轉(zhuǎn)?Unicode?編號(hào)
>>>?ord('A')
65
>>>?hex(ord('A'))
'0x41'>>>?ord('你')
20320
>>>?hex(ord('你'))
'0x4f60'>>>?'你好'.encode('unicode_escape')
b'\\u4f60\\u597d'#?Unicode?編號(hào)轉(zhuǎn)字符
>>>?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')
你好
#?漢字轉(zhuǎn)十六進(jìn)制
>>>?'你好'.encode('gbk')
b'\xc4\xe3\xba\xc3'#?十六進(jìn)制轉(zhuǎn)漢字
>>>?b'\xc4\xe3\xba\xc3'.decode('gbk')
'你好'#?漢字轉(zhuǎn)十六進(jìn)制字符串
>>>?''.join(?[?'%02X'?%?x?for?x?in?'你好'.encode('gbk')?]?).strip()
'C4E3BAC3'
>>>?'?'.join(?[?'%02X'?%?x?for?x?in?'你好'.encode('gbk')?]?).strip()
'C4?E3?BA?C3'#?十六進(jìn)制字符串轉(zhuǎn)漢字
>>>?bytes.fromhex('C4E3BAC3').decode('gbk')
'你好'
>>>?bytes.fromhex('C4?E3?BA?C3').decode('gbk')
'你好'
#?數(shù)字轉(zhuǎn)十六進(jìn)制字符串
>>>?hex(21)
'0x15'
>>>?hex(21)[2:]
'15'#?十六進(jìn)制字符串轉(zhuǎn)數(shù)字
>>>?int('0x15',?16)
21
>>>?int('15',?16)
21#?數(shù)字轉(zhuǎn)八進(jìn)制字符串
>>>?oct(21)
'0o25'
>>>?oct(21)[2:]
'25'#?八進(jìn)制字符串轉(zhuǎn)數(shù)字
>>>?int('0o25',?8)
21
>>>?int('25',?8)
21#?數(shù)字轉(zhuǎn)二進(jìn)制字符串
>>>?bin(5)
'0b101'
>>>?bin(5)[2:]
'101'#?二進(jìn)制字符串轉(zhuǎn)數(shù)字
>>>?int('0b101',?2)
5>>>?int('101',?2)
5
#?bytes?對(duì)象轉(zhuǎn)十六進(jìn)制字符串
>>>?"%02X"?%?ord(b'\xff')
'FF'
>>>??''.join(["%02X"?%?i?for?i?in?b'\xe4\xbd\xa0\xe5\xa5\xbd'])
'E4BDA0E5A5BD'#?bytes?轉(zhuǎn)?int
>>>?ord(b'\xff')
255#?int?轉(zhuǎn)?bytes
>>>?bytes([255])
b'\xff'
#?字符串轉(zhuǎn)?01?串(默認(rèn)?endian?是大端)
>>>?arr?=?bitarray()
>>>?arr.frombytes('你好'.encode('utf8'))
>>>?arr.to01()
'111001001011110110100000111001011010010110111101'#?01?串轉(zhuǎn)字符串
>>>?bitarray('111001001011110110100000111001011010010110111101').tobytes().decode('utf8')
'你好'
>>>?import?codecs
>>>?codecs.BOM_UTF8
b'\xef\xbb\xbf'
>>>?len(b'\xef\xbb\xbf')
3
>>>?codecs.BOM_UTF8.decode('utf8')
'\ufeff'
>>>?len('\ufeff')
1
>>>?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
>>>?import?encodings
>>>?encodings.normalize_encoding('utf-;8')
'utf_8'
對(duì)應(yīng) C 代碼為:unicodeobject.c 中的?_Py_normalize_encoding 函數(shù)。
import?sys
import?locale#?當(dāng)前系統(tǒng)所使用的默認(rèn)字符編碼
>>>?sys.getdefaultencoding()
'utf-8'#?用于轉(zhuǎn)換?Unicode?文件名至系統(tǒng)文件名所使用的編碼
>>>?sys.getfilesystemencoding()
'utf-8'#?獲取默認(rèn)的區(qū)域設(shè)置并返回元組(語言,?編碼)
>>>?locale.getdefaultlocale()
('zh_CN',?'cp936')#?返回用戶設(shè)定的文本數(shù)據(jù)編碼
#?文檔提到this?function?only?returns?a?guess
>>>?locale.getpreferredencoding()
'cp936'
>>>?line?=?'0123456789'
>>>?line[::-1]
'9876543210'
【相關(guān)閱讀】
Unicode Tips
Python3 處理 gb18030 亂碼
*** walker ***
轉(zhuǎn)載于:https://blog.51cto.com/walkerqt/1954215
總結(jié)
以上是生活随笔為你收集整理的关于 Python3 的编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。