当前位置: 首页 > 面试题库 >

用Python写入UTF-8文件

段弘和
2023-03-14
问题内容

我真的很困惑codecs.open function。当我做:

file = codecs.open("temp", "w", "utf-8")
file.write(codecs.BOM_UTF8)
file.close()

它给我错误

UnicodeDecodeError:’ascii’编解码器无法解码位置0的字节0xef:序数不在范围内(128)

如果我做:

file = open("temp", "w")
file.write(codecs.BOM_UTF8)
file.close()

它工作正常。

问题 是为什么第一种方法会失败?以及如何插入宝?

如果第二种方法是正确的方法,那么使用的重点是codecs.open(filename, "w", "utf-8")什么?


问题答案:

我相信问题在于这codecs.BOM_UTF8是字节字符串,而不是Unicode字符串。我怀疑文件处理程序试图根据“我是将Unicode编写为UTF-8编码的文本,但是您给了我一个字节字符串!”来猜测您的意思是什么!

尝试直接为字节顺序标记(即Unicode U + FEFF)编写Unicode字符串,以便该文件将其编码为UTF-8:

import codecs

file = codecs.open("lol", "w", "utf-8")
file.write(u'\ufeff')
file.close()

(这似乎给出了正确的答案-带有EF BB BF字节的文件。)

编辑:S. Lott建议使用“
utf-8-sig”作为编码要比直接自己编写BOM更好,但是在此我将保留此答案,因为它可以解释以前的问题。



 类似资料:
  • 问题内容: 我在理解将文本写入文件和将文件写入文件时遇到了大脑故障(Python 2.4)。 因此,我在文件f2 中输入我最喜欢的编辑器。 然后: 我在这里不明白什么?显然,我缺少一些至关重要的魔术(或理性)。一种类型的文本文件可以正确转换? 在这里,我真正无法理解的是UTF-8表示法的意义所在,如果你实际上无法让Python识别它的话(如果它来自外部)。也许我应该只将JSON转储字符串,然后使用

  • 问题内容: 我有一堆不是UTF-8编码的文件,我正在将网站转换为UTF-8编码。 我对要保存在utf-8中的文件使用了简单的脚本,但是文件以旧编码保存: 如何以utf-8编码保存文件? 问题答案: file_get_contents / file_put_contents不会神奇地转换编码。 您必须显式转换字符串。例如使用或。 尝试这个: 或者,使用PHP的流过滤器:

  • 问题内容: 我有一个包含unicode字符串的词典列表。 可以将字典列表写入CSV文件。 我希望CSV文件以UTF8编码。 该模块无法处理将unicode字符串转换为UTF8的操作。 该模块文档具有的一切转换为UTF-8的例子: 它也有一个类。 但是…我该如何处理这些?他们是否不必将自己插入其中,以捕获反汇编的字典并对其进行编码,然后再将其写入文件中?我不明白 问题答案: 更新 :第三方unico

  • 除非我能在确保输入文件是用UTF-8编码后使测试工作,否则什么是基本错误,我真正感兴趣的问题是: 上面的方法是否保证了UTF-8文件中的缺陷也被逐个复制,或者将字符加载到的过程是否改变了这一点?

  • 问题内容: 我有一些当前代码,问题是它创建了一个1252代码页文件,我想强制它创建一个UTF-8文件 任何人都可以通过此代码帮助我,因为我说它当前可以工作…但是我需要强制保存utf ..我可以传递参数或其他东西吗? 这就是我所拥有的,任何帮助我都感激不尽 问题答案: 而不是使用,创建一个。然后,你可以将其包装在中,以允许你在构造函数中传递编码。然后,你可以将数据写入语句中:

  • 你好,我想写一个带有HEBREW文本的CSV。它写了一些符号,而不是希伯来文。下面是我的PHP代码。 我在互联网上查了一下,添加了“fputs($fp,$bom=(chr(0xEF).chr(0xBB).chr(0xBF))”,但没有成功。谁能帮帮我吗。 下面是我得到的结果。