What  means
 is a byte order mark that's been read with the wrong encoding.  at the very start of a file is a byte order mark, an invisible character, U+FEFF, that some programs put at the start of UTF-8 files to say they're UTF-8. Its bytes are EF BB BF. A program that reads the file as Windows-1252 shows them as ï, » and ¿.
Byte by byte
| Byte | In UTF-8 | Windows-1252 shows |
|---|---|---|
| EF | lead byte: 3 bytes in all | ï |
| BB | continuation byte | » |
| BF | continuation byte | ¿ |
Byte by bytestringmash.com/mojibake/byte-order-mark
Where you probably saw it
The first cell of a CSV file, where the header id turns into id and stops matching.
The first line of a code, JSON or config file saved by an editor set to add a BOM.
The top of a web page, where a BOM in an included file can show as stray characters.
Related sequences
Text broken this way rarely has just one problem.  is a broken space, ’ is a broken apostrophe, é is a broken é. The mojibake fixer repairs all of them at once, and its table lists the rest.
Questions
What is ?
A byte order mark, U+FEFF, read with the wrong encoding. Its UTF-8 bytes EF BB BF show as  in Windows-1252.
Should I remove it?
For data and code, usually yes. Excel uses it to recognise UTF-8 CSV files, though, so keep it in CSVs meant for Excel. Set Byte order mark to Remove it to strip it.
Why does my CSV header not match?
An invisible BOM is stuck to the first column name, so id is really U+FEFF followed by id.
Sources
Added . What's new








