A quick look confirms my suspicion that this just isn’t handled properly in c++/stl, which is why we’re base64 encoding the character saves.
AFAIK the only way around this is to build a blacklist or whitelist of characters, and mangle characters we don’t support.
Aah, of course such a whiteslist exists, it looks like what we want to do is sanitize the string like (python pseudocode because reasons)
for character in name:
if !isgraph(character):
character = ‘_’
Haven’t tested it, but that’s something like what we want.