Skip to content

spkg/bom

Repository files navigation

bom

strip UTF-8 byte order marks

GoDoc Build Status (Linux) Build status (Windows) License Coverage Status GoReportCard

The bom package provides a convenient way to strip UTF-8 byte order marks (BOM) from the beginning of a byte slice or an io.Reader.

The Unicode Standard defines UTF-8 byte order marks as the byte sequence 0xEF,0xBB,0xBF, but neither requires nor recommends their use. The Go standard library provides no support for UTF-8 byte order marks, and it looks like it never will. To quote Andy Balholm in the discussion on this issue at https://groups.google.com/forum/#!topic/golang-nuts/OToNIPdfkks

The Go team includes the original designers of UTF-8, and they consider BOMs an aBOMination. They are reluctant to do anything to make life easier for people who use BOMs. :-)

(Although they did make the compiler accept source files with BOMs, if I remember right.)

In the same discussion thread another participant makes the comment that it should not be difficult to write an io.Reader that eats the BOM.

It isn't difficult, and here is one simple implementation.