首页 > 解决方案 > 使用开放参数编码与编码字符串方法字节大小

问题描述

我遇到了一些我无法理解的事情。

所以我尝试使用字符串编码方法和开放编码参数用一个 unicode 字符对我的字符串进行编码。由于某种原因,这两种方法之间的写入字节大小存在差异。

这是示例代码:

with open("in.txt", "wb") as f:
    no = f.write("Wlazł".encode("utf-8"))
    print(no) # -> 6
with open("in.txt", "w", encoding="utf-8") as f:
    no = f.write("Wlazł")
    print(no) # -> 5

有谁知道为什么会这样?

标签: pythonfilecharacter-encoding

解决方案


当您以二进制模式打开文件时,您将获得一个io.RawIOBase实例,并且RawIOBase.write返回写入的字节数。

当您以文本模式打开文件时,您将获得一个io.TextIOBase实例,并且TextIOBase.write返回写入的字符数。

所以差异的原因是一个是字节数,另一个是字符数。


推荐阅读