簡體   English   中英

python編解碼

[英]python encoding and decoding

我從一本書中找到了一段文字,內容如下:

在Python 3.X中,普通的str字符串處理Unicode文本(包括ASCII,它只是一種簡單的Unicode); 不同的bytes字符串類型表示原始字節值(包括媒體和編碼文本); 和 2.X Unicode 文字在 3.3 及更高版本中受支持以實現 2.X 兼容性(它們被視為與普通 3.X str字符串相同)。

問題:什么是 2.X Unicode 文字?

在 Python 2.X 中,普通的str字符串處理 8 位字符串(包括 ASCII 文本)和原始字節值; 不同的unicode字符串類型表示 Unicode 文本; 和 3.X 字節文字在 2.6 及更高版本中受支持以實現 3.X 兼容性(它們被視為與普通 2.X str字符串相同):

問題:什么是 3.X 字節文字?

它說在 Python 2 中,字符串默認不是 Unicode,它們是簡單的老式 8 位字符 ASCII/ANSI。 所以如果你想在你的源代碼中把一個常量字符串放在引號中(這是字面意思)並讓它 Python 2 將它解釋為 Unicode 字符串,而不是 ASCII,那么你必須在它前面放一個“u”明確聲明。

Python 2.7.18 (default, Aug  4 2020, 11:16:42)
>>> type("hello")
<type 'str'>
>>> type(u"hello")
<type 'unicode'>
>>>

在 Python 3 中,str class始終為 Unicode,因此您可以根據需要添加“u”,但這沒有任何區別; 無論如何,所有字符串都是 Unicode。 Python 3 允許使用“u”語法只是為了避免破壞使用它的舊腳本。

Python 3.8.5 (default, Jul 28 2020, 12:59:40)
>>> type("hello")
<class 'str'>
>>> type(u"hello")
<class 'str'>
>>>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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