📜  python 编码 utf 8 - Python (1)

📅  最后修改于: 2023-12-03 15:04:18.174000             🧑  作者: Mango

Python 编码 utf-8

前言

在 Python 中使用 UTF-8 编码是一种非常普遍的做法。UTF-8 是一种可变长度的编码方式,它可以用来表示任意 Unicode 字符,这使得它成为一种受欢迎的编码方式。

编码方式设置

在 Python 中,你可以使用 UTF-8 编码来保存或读取文件,或者在字符串中使用 UTF-8 编码。下面是一些例子。

在文件中使用 UTF-8 编码
with open('file.txt', 'w', encoding='utf-8') as f:
    f.write('这里是一些中文字符')

在上面的例子中,我们使用 UTF-8 编码来打开文件,并将 str 字符串写入文件。当你在写入文件时使用 UTF-8 编码时,你需要指定 encoding 参数,以确保你正在写入正确的编码格式的数据。

在字符串中使用 UTF-8 编码
s = '这里是一些中文字符'
s_utf8 = s.encode('utf-8')
print(s_utf8)

在上面的例子中,我们将 str 字符串转换为 bytes 对象,并将 bytes 对象使用 UTF-8 编码。注意,当你使用 bytes.encode() 方法时,你需要指定要使用的编码方式。

常见问题
UnicodeDecodeError

在读取使用 UTF-8 编码的文件时,可能会出现 UnicodeDecodeError 错误。这通常是由于文件中包含了非 UTF-8 编码的字符,或者是文件编码与你的编码方式不匹配所导致的。在这种情况下,你可以尝试使用 chardet 库来检测文件的编码方式。例如:

import chardet

with open('file.txt', 'rb') as f:
    data = f.read()
    encoding = chardet.detect(data)['encoding']
    s = data.decode(encoding)
    print(s)

在上面的例子中,我们使用 chardet 库来检测文件的编码方式,并将文件内容转换为 str 字符串。

Python 2 中的编码问题

在 Python 2 中,字符串和字节之间的区别不如 Python 3 明显。当你在 Python 2 中使用 UTF-8 编码时,你需要将 str 字符串转换为 unicode 字符串,并将 unicode 字符串转换为 UTF-8 编码的 str 字符串。例如:

s = '这里是一些中文字符'
s_unicode = s.decode('utf-8')
s_utf8 = s_unicode.encode('utf-8')
print(s_utf8)

在上面的例子中,我们首先将 s 字符串转换为 unicode 字符串,然后将 unicode 字符串转换为 UTF-8 编码的 str 字符串。