繁体   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