+4 投票
分类:学习问题 | 用户: 9 6 3 (1.3k 分)
filename = 'alice.txt'

with open(filename, encoding='utf-8') as f:

    contents = f.read()

书上说在系统的默认编码与要读取的文件使用的编码不一致时,就要给encoding指定值。

但怎么判断要读取的文件与系统默认编码不一致?

encoding可以指定什么样的值?

在什么时候该指定什么样的值?

2 个回答

+2 投票
用户: 9 5 2 (1.1k 分)
采纳于 用户:
 
已采纳

判断要读取的文件与系统默认编码是否一致,通常依赖于以下几个因素:

  1. 文件来源:如果你知道文件的来源,比如它是从一个特定的软件或平台生成的,那么通常可以查阅该软件或平台的文档来确定它使用的编码。

  2. 文件内容:某些编码有特定的字符序列或字节顺序标记(BOM)。例如,UTF-8 编码的文件可能以特定的字节序列开头,UTF-16 或 UTF-32 文件则可能包含 BOM。通过检查文件的前几个字节,有时可以猜测文件的编码。

  3. 错误提示:如果你尝试使用默认编码打开文件,并遇到解码错误,那么这可能表明文件使用了不同的编码。

  4. 尝试:有时,你可能需要尝试不同的编码来读取文件,看看哪种编码可以成功读取文件内容而不引发错误。

encoding 参数可以指定的值通常是各种字符编码的名称,如 'utf-8'、'utf-16'、'iso-8859-1'、'gbk'(用于简体中文)、'big5'(用于繁体中文)、'latin1' 等。这些编码标准都是为了将字符映射到特定的字节序列。

至于什么时候该指定什么样的值,这通常取决于你的具体需求和你对文件的了解。以下是一些建议:

  • 如果文件是文本文件,并且你知道它是用 UTF-8 编码的,那么你应该指定 encoding='utf-8'。UTF-8 是一种非常常见的编码,支持全球几乎所有的字符集,并且是许多现代应用程序和平台的默认编码。

  • 如果文件是用其他编码编写的,比如 'iso-8859-1' 或 'gbk',你应该指定相应的编码。

  • 如果你不确定文件的编码,你可能需要尝试不同的编码,或者查看文件的文档或元数据以获取更多信息。有些文本编辑器或工具可以帮助你识别文件的编码。

  • 如果文件包含多种编码,或者编码方式非常不规范,处理起来可能会更复杂。在这种情况下,你可能需要编写特定的代码来处理不同部分的编码,或者使用能够处理这种情况的第三方库。

用户: 3 1 (100 分)
0 投票
用户: 7 4 (1.2k 分)

Encoding即编码,是将信息分类的结果用一种易于被计算机和人识别的符号体系表示出来的过程,是人们统一认识、统一观点、相互交换信息的一种技术手段。其直接产物是代码。Encoding的分类包括以下几种:

  1. 二进制编码:二进制编码是计算机中最基本的编码方式,将数字和字符转换成二进制形式的编码方式,使用0和1两个数字表示二进制数值,可以表达0~255之间的所有数值。
  2. ASCII编码:ASCII (American Standard Code for Information Interchange),即美国信息交换标准代码,是最早的字符编码标准,使用7位二进制数表示128个字符,包括英文字母、数字、标点符号以及控制字符等。
  3. Unicode编码:Unicode编码是一种用于表示世界上所有字符的标准编码方式,它为每个字符分配了一个唯一的数字码点。Unicode编码可以使用不同的存储方式,如UTF-8、UTF-16和UTF-32等。UTF-8是一种可变长度的Unicode编码方式,使用8位二进制数表示字符,可以表示世界上所有字符。而UTF-16是一种固定长度的Unicode编码方式,使用16位二进制数表示字符。

此外,还有其他类型的编码,如BCD码、格雷码等。同时,在中国,也有特定的汉字编码字符集,如GB2312、GBK以及GB18030等。

欢迎来到 在线问答系统 ,有什么不懂的可以尽管在这里提问,你将会收到社区其他成员的回答。
...