Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > русские буквы в командной строке |
Автор: BCC 22.1.2019, 11:25 | ||
Как получить русские названия файлов из командной строки через @ARGV? Скрипт должен запускаться под Windows с помощью командного файла, содержащего следующую команду: perl script.pl %1 Предполагается, что параметр задаётся с помощью перетаскивания в проводнике названия файла на этот командный файл. Сейчас скрипт выглядит:
В результате получается (копия из окна cmd): C:\BCC\Develop\Perl\Learn\RusCmd>perl RusCmd.pl C:\BCC\Develop\Perl\Learn\RusCmd\бв.txt Привет! "\x{00e1}" does not map to cp866 at RusCmd.pl line 10. "\x{00e2}" does not map to cp866 at RusCmd.pl line 10. C:\BCC\Develop\Perl\Learn\RusCmd\\x{00e1}\x{00e2}.txt Возможно, я пропустил нужное обсуждение, но по-моему обсуждался только вывод на консоль русских букв, а мне нужен ввод |
Автор: BCC 22.1.2019, 12:30 | ||||
Прошу прощения за беспокойство, ответ нашёлся в http://forum.vingrad.ru/forum/topic-383151/kw-%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-utf.html решение:
выдаёт: 1251: C:\BCC\Develop\Perl\Learn\RusCmd\бв.txt А работать с файлом надо БЕЗ перекодировки имени:
Добавлено через 1 минуту и 25 секунд Вопрос можно считать исчерпанным |
Автор: _zorn_ 23.1.2019, 14:56 |
А если консоль в UTF-8 ? |
Автор: BCC 23.1.2019, 15:04 | ||||
Теоретически, поскольку в скрипте было
то при получении информации из ARGV перекодировка не нужна, а при открытии файла его имя надо перекодировать в системную кодировку (cp1251) Но это надо проверить! |