哪个字符编码Python 3.x支持文件I / O?

时间:2016-12-06 18:57:44

标签: python python-3.x encoding

had a problemUTF-8支持的字符(\ufffd)写入文本文件。我想知道最具包容性的字符集Python 3.x支持将字符串数据写入文件。

我能够通过

克服这个问题
  

valEncoded =(origVal.encode(encoding =' ASCII',errors =' replace'))。decode()

基本上从origVal过滤掉了非ASCII字符。但我认为Python文件I / O应该支持多于ASCII,这是相当保守的。所以我正在寻找支持最具包容性的字符集。

1 个答案:

答案 0 :(得分:3)

任何UTF编码都应该有效:

  • UTF-8通常是最紧凑的(特别是如果文本主要与ASCII兼容),并且可以在具有不同字节顺序的系统之间移植,而不需要BOM(字节顺序标记)。它是支持完整Unicode范围的非Windows系统上使用的最常见编码(以及用于通过网络提供数据的最常用编码,例如HTML,XML,JSON)
  • Windows通常使用UTF-16(系统"宽字符" API将其用作本机编码)
  • UTF-32并不常见,浪费了大量的磁盘空间,唯一真正的好处是字符和字节之间的固定比率(在减去BOM后你可以将文件大小除以4,你得到的字符数)

一般情况下,我建议使用UTF-8,除非您知道它将被其他需要UTF-16等的工具使用。