簡體   English   中英

將字符串編碼為unicode

[英]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表示形式。 從字面上看, ab被包含在表示中,因為這是更短,更易讀的選項; 字節\\x00不會執行相同的操作,因為這是一個不可見的控制字符。

盡管如此,您當然也可以寫ab ,因為如果您願意的話, \\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM