0xEF,0xBB,0xBF 是什么

现有一个证书 PEM 文件,用 pem.Decode() 怎么也无法读取出来,打开文件看了又看,肉眼完全没发现毛病。

然而,当我们打印出改文件的二进制,该文件前面多了一串 0xEF,0xBB,0xBF。 What ?

这是什么? Google 告诉我,这个东西叫 BOM。 而且是 Unicode 规范中有一个概念(Byte Order Mark),就是字节序标记的意思。

且,Unicode 标准允许使用UTF-8 中的 BOM ,但不要求或推荐使用它。字节顺序在 UTF-8 中没有意义!!

但, Microsoft编译器和解释器 以及Microsoft Windows上 的许多软件(例如记事本)都会添加 BOM, 这也就是我这个 PEM 怎么也读不了的原因。

下表说明了 BOM 字符如何在各种编码中表示为字节序列,以及这些序列如何出现在将每个字节解释为传统编码的文本编辑器中:

更多BOM 相关wiki.

本文链接:参与评论 »

--EOF--

Comments