Tente montar o sistema de arquivos com a opção iocharset definida para a codificação usada.
De man mount
na seção "Opções de montagem para gordura":
iocharset=value
Character set to use for converting between 8 bit characters and
16 bit Unicode characters. The default is iso8859-1. Long file‐
names are stored on disk in Unicode format.
Veja também na seção "Opções de montagem para vfat":
uni_xlate
Translate unhandled Unicode characters to special escaped
sequences. This lets you backup and restore filenames that are
created with any Unicode characters. Without this option, a '?'
is used when no translation is possible. The escape character is
':' because it is otherwise illegal on the vfat filesystem. The
escape sequence that gets used, where u is the unicode charac‐
ter, is: ':', (u & 0x3f), ((u>>6) & 0x3f), (u>>12).
e
utf8 UTF8 is the filesystem safe 8-bit encoding of Unicode that is
used by the console. It can be be enabled for the filesystem
with this option or disabled with utf8=0, utf8=no or utf8=false.
If 'uni_xlate' gets set, UTF8 gets disabled.
Editar:
Me desculpe, isso foi Linux, isso é para o BSD (de man mount_msdosfs
:
-L locale
Specify locale name used for file name conversions for DOS and
Win'95 names. By default ISO 8859-1 assumed as local character
set.
-D DOS_codepage
Specify the MS-DOS code page (aka IBM/OEM code page) name used
for file name conversions for DOS names.