Maybe a method for preventing ffmpeg from failing on special characters is just to rename the source file to something simple first, then rename the output to the original file name?
I s'pose this creates an issue where if the transcode fails you have an unlabeled file, so maybe create a duplicate file with a simple name, encode from that file, and then move/delete both source files on success?