Я использую последний Perl под немецкой Windows 7 и хочу использовать utf8 везде в моих программах perl (для скрипта, содержимого файла, имен файлов, почтовых текстов и т. Д.).
Всеработает нормально, но я сталкиваюсь с проблемами при попытке обработать файлы, имеющие специальные символы в имени файла.Даже system
звонки не работают.Так (как) я могу сказать Perl использовать utf8
везде ?
Я пробовал некоторое время с encode
и decode
, но очень непонятно, почему это работает, как работает... Также мне нужно encode('cp850', TEXT)
для правильного отображения в окне командной строки.
Примеры:
Когда мне нужно скопировать файл, он работает только при использовании File::copy(encode("iso-8859-1", $filename), ...)
и когда я хочу работать с pdf-файлами, успешной командой является system(encode('cp850', sprintf('pdftk.exe %s...', decode('utf8', $file))));
Почему это (особенно декодирование в системном вызове) и есть ли более простой способ?Может быть, что-то с use open ':encoding...'
, но мне пока не повезло.