给定一个字节流(生成器、文件等),如何读取单个
utf-8
编码的字符?
- 此操作必须从流中消耗该字符的字节。
- 此操作不得消耗超过第一个字符的任何流字节。
- 此操作应在任何Unicode字符上成功。
utf-8
解码函数来实现这一点,但我更愿意不重新发明轮子,因为我相信这种功能肯定已经被用于解析utf-8
字符串的其他地方。
TextIOWrapper
是否进行任何缓冲(从而消耗超过第一个字符的字节)?如果我取一个文件f
并将其包装为wrapped = TextIOWrapper(f, 'utf-8')
,然后调用wrapper.read(1)
,接着是f.read(1)
,那么读取的字节会比紧随 utf-8 字符后面的字节要远得多。 - arcyqwertyTextIOWrapper
一次读取 2k 字节(_CHUNK_SIZE
),为了第一个字符,它消耗了比必要更多的字节。 - jfs_CHUNK_SIZE
设置为1? - jfs_CHUNK_SIZE
是一个实现细节,可能会在未来的Python版本中出现问题。买家自负。 - Kevin