为什么python2 csv模块不支持unicode?

2024-09-29 00:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

正如您可能知道的那样,python2stdlib^{}模块并不“正确地”支持unicode。它希望在获取二进制字符串时将其写入文件。你知道吗

对我来说,这似乎总是有点违反直觉,因为我会告诉人们在内部使用unicode字符串,并通过使用codecs.open(..., encoding='...')打开文件来为外部世界正确序列化,但是在csv模块中,您需要为传入的lists/dicts手动执行此操作。你知道吗

我一直很困惑为什么会这样,现在一位同事又问我,我不得不承认,除了“可能已经长大了,而且从未修好”之外,我不知道还有什么原因。你知道吗

似乎连PEP305都已经包含了unicode的todo和对codecs.open的引用。你知道吗

这里是否有一些聪明的Python大师知道并能启发我们?你知道吗


Tags: 模块文件csv字符串序列化unicode世界二进制
1条回答
网友
1楼 · 发布于 2024-09-29 00:23:07

python2csv不支持Unicode,因为CSV不支持Unicode。你知道吗

RFC 4180中定义的CSV和常见用法不超过一个字节序列。没有标准来定义这些字节如何映射到可读文本,不同的CSV处理工具有不同的行为。如果Python的csv提供了特定的编码规则,那么在很多情况下它们都是错误的。最好让用户通过使用适用于该应用程序的约定手动编码/解码来决定。你知道吗

python3 csv在与文本IO流的对话中获得了Unicode支持(因为这些现在更为常见)。它们有自己的编码,但是如果您将其与CSV的默认编码一起使用,那么结果仍然是错误的。你知道吗

相关问题 更多 >