https://blog.davidvarghese.dev/posts/character-encoding-part-2/
Character Encoding Explored - Part 2: UTF-16, UTF-8, BOM, Self-Synchronization