<a href="https://s3.51cto.com/wyfs02/M00/9D/E1/wKiom1mIEXfReh9TAAA5ATqexB8639.png" target="_blank"></a>
2、漢字與 gbk 十六進制(二進制)之間的轉換。
<code># 漢字轉十六進制</code>
<code>>>> </code><code>'你好'</code><code>.encode(</code><code>'gbk'</code><code>)</code>
<code>b</code><code>'\xc4\xe3\xba\xc3'</code>
<code># 十六進制轉漢字</code>
<code>>>> b</code><code>'\xc4\xe3\xba\xc3'</code><code>.decode(</code><code>'gbk'</code><code>)</code>
<code>'你好'</code>
<code># 漢字轉十六進制字元串</code>
<code>>>> '</code><code>'.join( [ '</code><code>%</code><code>02X</code><code>' % x for x in '</code><code>你好</code><code>'.encode('</code><code>gbk') ] ).strip()</code>
<code>'C4E3BAC3'</code>
<code>>>> </code><code>' '</code><code>.join( [ </code><code>'%02X'</code> <code>%</code> <code>x </code><code>for</code> <code>x </code><code>in</code> <code>'你好'</code><code>.encode(</code><code>'gbk'</code><code>) ] ).strip()</code>
<code>'C4 E3 BA C3'</code>
<code># 十六進制字元串轉漢字</code>
<code>>>> bytes.fromhex(</code><code>'C4E3BAC3'</code><code>).decode(</code><code>'gbk'</code><code>)</code>
<code>>>> bytes.fromhex(</code><code>'C4 E3 BA C3'</code><code>).decode(</code><code>'gbk'</code><code>)</code>
3、漢字與 unicode 編碼之間的轉換。
<code>>>> </code><code>'你好'</code><code>.encode(</code><code>'unicode_escape'</code><code>)</code>
<code>b</code><code>'\\u4f60\\u597d'</code>
<code>>>> b</code><code>'\\u4f60\\u597d'</code><code>.decode((</code><code>'unicode_escape'</code><code>))</code>
<code>>>> </code><code>print</code><code>(b</code><code>'\\u4f60\\u597d'</code><code>)</code>
<code>>>> </code><code>print</code><code>(u</code><code>'\u4f60\u597d'</code><code>)</code>
<code>你好</code>
4、bytes 相關
<code># bytes 對象轉十六進制字元串</code>
<code>>>> </code><code>"%02X"</code> <code>%</code> <code>ord</code><code>(b</code><code>'\xff'</code><code>)</code>
<code>'FF'</code>
<code># bytes 轉 int</code>
<code>>>> </code><code>ord</code><code>(b</code><code>'\xff'</code><code>)</code>
<code>255</code>
<code># int 轉 bytes</code>
<code>>>> bytes([</code><code>255</code><code>])</code>
<code>b</code><code>'\xff'</code>
5、關于utf8的bom頭。(Python3下)
<code>>>> </code><code>import</code> <code>codecs</code>
<code>>>> codecs.BOM_UTF8</code>
<code>b</code><code>'\xef\xbb\xbf'</code>
<code>>>> </code><code>len</code><code>(b</code><code>'\xef\xbb\xbf'</code><code>)</code>
<code>3</code>
<code>>>> codecs.BOM_UTF8.decode(</code><code>'utf8'</code><code>)</code>
<code>'\ufeff'</code>
<code>>>> </code><code>len</code><code>(</code><code>'\ufeff'</code><code>)</code>
<code>1</code>
<code>>>> </code><code>from</code> <code>encodings.aliases </code><code>import</code> <code>aliases</code>
<code>>>> </code><code>for</code> <code>k </code><code>in</code> <code>aliases:</code>
<code> </code><code>print</code><code>(</code><code>'%s: %s'</code> <code>%</code> <code>(k, aliases[k]))</code>
8、驗證是不是有效編碼。
<code>>>> codecs.lookup(</code><code>'utf8'</code><code>) </code><code>#有效</code>
<code><codecs.CodecInfo </code><code>object</code> <code>for</code> <code>encoding utf</code><code>-</code><code>8</code> <code>at </code><code>0x13fb4f50828</code><code>></code>
<code>>>> codecs.lookup(</code><code>'utf-;8'</code><code>) </code><code>#有效</code>
<code><codecs.CodecInfo </code><code>object</code> <code>for</code> <code>encoding utf</code><code>-</code><code>8</code> <code>at </code><code>0x13fb4f50a08</code><code>></code>
<code>>>> codecs.lookup(</code><code>'utf88'</code><code>) </code><code>#無效</code>
<code>Traceback (most recent call last):</code>
<code> </code><code>File</code> <code>"<pyshell#4>"</code><code>, line </code><code>1</code><code>, </code><code>in</code> <code><module></code>
<code> </code><code>codecs.lookup(</code><code>'utf88'</code><code>)</code>
<code>LookupError: unknown encoding: utf88</code>
9、标準化 encoding。
<code>>>> </code><code>import</code> <code>encodings</code>
<code>>>> encodings.normalize_encoding(</code><code>'utf-;8'</code><code>)</code>
<code>'utf_8'</code>
<code>import</code> <code>sys</code>
<code>import</code> <code>locale</code>
<code> </code>
<code># 目前系統所使用的預設字元編碼</code>
<code>>>> sys.getdefaultencoding()</code>
<code>'utf-8'</code>
<code># 用于轉換 Unicode 檔案名至系統檔案名所使用的編碼</code>
<code>>>> sys.getfilesystemencoding()</code>
<code># 擷取預設的區域設定并傳回元組(語言, 編碼)</code>
<code>>>> locale.getdefaultlocale()</code>
<code>(</code><code>'zh_CN'</code><code>, </code><code>'cp936'</code><code>)</code>
<code># 傳回使用者設定的文本資料編碼</code>
<code># 文檔提到this function only returns a guess</code>
<code>>>> locale.getpreferredencoding()</code>
<code>'cp936'</code>
相關閱讀:
本文轉自walker snapshot部落格51CTO部落格,原文連結http://blog.51cto.com/walkerqt/1954215如需轉載請自行聯系原作者
RQSLT