在实践中,这不是一个真正的问题,因为我可以只编写BOM = "\uFEFF";但是,我不得不为这样一个基本的东西硬编码一个神奇的常量,这让我很苦恼。编辑:和它容易出错!我在这个问题中不小心把BOM写成了\uFFFE,没有人注意到。它甚至导致了一个不正确的拟议解决方案。python肯定在某个地方以一种方便的形式定义了它?
搜索在codecs模块中找到了一系列常量:codecs.BOM、codecs.BOM_UTF8等等。但这些是bytes对象,而不是字符串。真正的BOM在哪里?
这是针对python 3的,但是我会对Python 2的完整性感兴趣。
发布于 2015-10-03 12:51:34
根本就没有。bytes常量在codecs中是您应该使用的。
这是因为您永远不应该在解码的文本中看到BOM (也就是说,您不应该遇到实际编码代码点U+FEFF的字符串)。相反,BOM在流开始时以字节模式存在,当您用BOM解码某些bytes时,输出string中不包含U+FEFF。类似地,编码过程应该处理向输出bytes添加任何必要的BOM --它不应该在输入string中。
BOM唯一重要的时间是在转换为bytes或从BOM转换时。
发布于 2015-10-03 16:42:31
我想你可以:
unicodedata.lookup('ZERO WIDTH NO-BREAK SPACE')但它不像你已经拥有的那么干净
https://stackoverflow.com/questions/32922265
复制相似问题