这在实践中不是一个真正的问题,因为我可以写BOM = "\uFEFF"
;但它让我觉得我必须为这样一个基本的东西硬编码一个魔法常数。 [编辑:而且容易出错!在这个问题中,我不小心将BOM写为\uFFFE
,没有人注意到。它甚至导致了一个不正确的提议解决方案。]当然python在某个地方以一种方便的形式定义它?
搜索在codecs
模块中显示了一系列常量:codecs.BOM
,codecs.BOM_UTF8
,依此类推。但这些是bytes
个对象,而不是字符串。真实物料清单在哪里?
这是针对python 3的,但我会对Python 2的完整性感兴趣。
答案 0 :(得分:1)
没有。 bytes
中的codecs
常量是您应该使用的。
这是因为您不应该在解码文本中看到BOM(即,您不应该遇到实际编码代码点U+FEFF
的字符串)。相反,BOM在流的开头存在为字节模式,当您使用BOM解码某些bytes
时,U+FEFF
不包括在内输出string
。同样,编码过程应该处理向输出bytes
添加任何必要的BOM - 它不应该在输入string
中。
BOM唯一重要的是转换为bytes
或从opencv_imgcodecs
转换。
答案 1 :(得分:1)
我想你可以使用:
unicodedata.lookup('ZERO WIDTH NO-BREAK SPACE')
但它不像你已经拥有的那样干净