【发布时间】:2021-05-08 22:05:18
【问题描述】:
我有一个文本 Aur\xc3\xa9lien 并想用 python 3.8 对其进行解码。
我尝试了以下
import codecs
s = "Aur\xc3\xa9lien"
codecs.decode(s, "urf-8")
codecs.decode(bytes(s), "urf-8")
codecs.decode(bytes(s, "utf-8"), "utf-8")
但它们都没有给出正确的结果Aurélien。
如何正确做?
没有基本的、通用的、权威的简单页面来描述所有这些 python 编码吗?
【问题讨论】:
-
s = "Aur\xc3\xa9lien"; b = bytes(s, 'latin-1'); print(b.decode('utf-8')) -
注意:你的“s”实际上并不是一个字符串,而是一个字节序列,所以你应该在它前面加上一个
b。您正在使用 Python 的一个特殊功能(它允许将二进制字符放在 Unicode 序列中)。 -
我从文件中读取了该字符串。如何在现有字符串前面加上'b'?
-
如何从文件中读取字符串?您可能使用了错误的
open命令。你使用哪个参数?通常open读取一个文本文件,并且您应该有一个 unicode 字符串(带有替换字符)。但是在正常情况下,您会得到这样的“字符串”。要获得二进制字符串,只需在open中使用'b' -
注意:你应该在回复时标记人。 (你有自动标记,因为你是提问者,当有人回复我的答案时我会得到它)。如何读取 csv 文件?通常我使用
with open('file.cvs', encoding='utf8' as f: for line in f.readlines(): fields=line.split(',')。但是您可能正在使用模块?csv模块?你如何阅读文件? [很久以前,在早期的 3.x 版本中,csv 在 Unicode 文件方面存在问题]
标签: python python-3.x encoding