So, you got a mysterious compile error and if you're lucky, your compiler will at least show you ZWNBSP instead of just a space.

Chances are your file got encoded in UTF-8 BOM instead of just UTF-8, and your compiler is choking on the Byte order mark.

To fix it, convert the file to UTF-8 without BOM.

This has happened to me several times over my career in various languages and has cost me hours of senseless debugging. Maybe you're lucky enough to find this post quickly when it happened to you.

As an example, here's an error message from the Clojure compiler:

Syntax error compiling at (somefile.clj:3:1)
Unable to resolve symbol: ZWNBSP in this context

Convert to UTF-8 without BOM

VIM

  • :set fileencoding=utf8
  • :set nobomb
  • Save the file.

IntelliJ

You should see your current encoding in the lower right status line. Click on it and choose Remove BOM.

Configure IntelliJ to prevent this

  • Open Settings -> Editor -> File Encodings
  • Set Create UTF-8 files to wih NO BOM
References