Rather than trying one method and then the other, allow the caller to
specify the encoding of the expected file. All other schemes are risky
and won't work well.
Rollback the function's default interface to the binary format in case
any plugin used it for non-unicode content, preserving backwards compat.