是否应为空字符串(UTF-16和UTF-32)添加BOM(字节顺序标记)?

时间:2014-04-30 02:22:03

标签: utf-16 string byte-order-mark convention utf-32

除了UTF-8之外,是否有一般性的理解,或者未说明约定,如果字符串为空,编码器可以(应该)安全地省略BOM。

对于空字符串似乎是浪费,特别是在发送到服务器时。 在这种情况下,编码类型和字节顺序无关紧要。

是否存在专门针对空字符串处理BOM的RFC?

谢谢。

1 个答案:

答案 0 :(得分:1)

BOM通常仅在没有关于字符串编码的其他外部信息时使用。对于文本文件有意义,数据必须是自描述的,但对于传输协议而言并非如此,除非没有其他可用的编码信息,例如HTTP中的Content-Type标头,<meta>标签HTML,由协议规范或协议扩展等硬编码。

对于简单地将字符串存储在内存中,如果正确跟踪字符串,则BOM无效。此外,根据您实际使用的特定字符串类型,空字符串可能会也可能不会实现为NULL指针,因此您可能无法包含BOM。

不,没有关于一般BOM使用情况的RFC。