Quick answer: Godot FileAccess.store_string producing files that Notepad opens as “ANSI”? Godot writes raw UTF-8 without a byte-order mark. Add the BOM manually if your tool chain needs it.

A save file written from Godot opens with garbled accented characters in Notepad. Notepad heuristically detects encoding and fails — needs an explicit BOM.

Write the BOM First

file.store_string("\uFEFF")
file.store_string(my_text)

The BOM is three bytes: EF BB BF. Notepad and other Windows tools see them and read the rest as UTF-8.

Buffer for Binary

file.store_buffer(PackedByteArray([0xEF, 0xBB, 0xBF]))
file.store_buffer(my_text.to_utf8_buffer())

For exact byte control, write via store_buffer. Useful when interleaving binary headers with text bodies.

Modern Tools Don’t Need It

VS Code, modern Notepad++, every Linux tool: no BOM required. Add it only when a legacy Windows consumer demands it — otherwise it’s extra bytes for no reason.

Verifying

The output file opens in Notepad with correct accented characters. file on Unix reports “UTF-8 Unicode (with BOM)”.

“Godot writes UTF-8 without BOM. Add U+FEFF when legacy tools need it.”

Avoid the BOM for any new-format file. Reserve it for interop with old Windows readers and game-engine plugins that hardcode the prefix.