[英]Encoding character string to unicode
我只是在玩我遵循的unicode
s='ab'
s.encode('utf8')
Out[44]: b'ab'
s.encode('utf16')
Out[45]: b'\xff\xfea\x00b\x00'
s.encode('utf32')
Out[46]: b'\xff\xfe\x00\x00a\x00\x00\x00b\x00\x00\x00'
我的問題是為什么utf-8僅返回字符串,而其他編碼返回正確的輸出? 第一種編碼utf-8是否應該返回像utf-16和utf-32這樣的字節編碼?
標准ascii字符以utf-8
編碼。 您的utf-8
編碼正確。 這是utf-8
的優點之一。
我期待像b'\\ x .. \\ x ..
b'ab'
b'\xff\xfea\x00b\x00'
b'\xff\xfe\x00\x00a\x00\x00\x00b\x00\x00\x00'
是每個字節序列的最簡單的Python表示形式。 從字面上看, a
和b
被包含在表示中,因為這是更短,更易讀的選項; 字節\\x00
不會執行相同的操作,因為這是一個不可見的控制字符。
盡管如此,您當然也可以寫a
和b
,因為如果您願意的話, \\x
也會轉義,導致字面量完全相等:
b'\x61\x62'
b'\xff\xfe\x61\x00\x62\x00'
b'\xff\xfe\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00'
UTF-8的優勢和特定的設計目標是將無格式舊ASCII字符編碼為單個字節,而無需任何額外的空字節或BOM信號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.