
Python 2:
str),它实际上是一个字节序列。unicode 类型,并且通常需要在字符串前加上 u 前缀。python# Python 2
s = "Hello" # str 类型,默认是字节串
u = u"Hello" # unicode 类型,明确表示为 Unicode 字符串
Python 3:
str)。bytes 类型,并且可以在字符串前加上 b 前缀来显式创建字节串。python# Python 3
s = "Hello" # str 类型,默认是 Unicode 字符串
b = b"Hello" # bytes 类型,明确表示为字节串
Python 2:
str 和 unicode 之间的转换需要显式调用 .encode() 和 .decode() 方法。python# Python 2
utf8_str = u"Hello".encode('utf-8') # 将 Unicode 转换为 UTF-8 编码的字节串
unicode_str = "Hello".decode('utf-8') # 将字节串转换为 Unicode 字符串
Python 3:
str 和 bytes 之间的转换同样需要显式调用 .encode() 和 .decode() 方法。str)和二进制数据(bytes),减少了混淆的可能性。python# Python 3
utf8_bytes = "Hello".encode('utf-8') # 将 Unicode 字符串转换为 UTF-8 编码的字节串
unicode_str = b"Hello".decode('utf-8') # 将字节串转换为 Unicode 字符串
Python 2:
str 类型的数据。python# Python 2
with open('file.txt', 'r') as f:
content = f.read().decode('utf-8') # 显式解码为 Unicode
Python 3:
str 类型的数据。python# Python 3
with open('file.txt', 'r', encoding='utf-8') as f:
content = f.read() # 直接返回 Unicode 字符串
Python 2:
print 是一个语句,而不是函数,对 Unicode 输出的支持较差。python# Python 2
print u"你好" # 可能会遇到编码问题
Python 3:
print 是一个函数,默认支持 Unicode 输出。python# Python 3
print("你好") # 支持 Unicode 输出
如果你正在从 Python 2 迁移到 Python 3,或者希望编写兼容两个版本的代码,这里有一些建议:
from __future__ import unicode_literals:这使得所有未加前缀的字符串都被视为 Unicode 字符串(Python 2 中的行为类似于 Python 3)。.encode() 和 .decode() 方法,避免隐式的编码转换。io.open:在 Python 2 中使用 io.open 来代替内置的 open 函数,以获得更好的编码支持。str),而 Unicode 字符串需要显式声明。str),而字节串需要显式声明。本文作者:君逍遥
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!