![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| arzamaz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.8.2011 Репутация: нет Всего: нет |
Список файлов с кириллицей в именах perl прочитает так.
Исходные файлы: документ.txt список.ls файл.bat То, что "видит" perl C5DF~1.TXT 3E92~1.LS 1F15~1.BAT Так работают команды cwd, readdir, File::find. Операции чтения с такими файлами проходят нормально, но при копировании, перемещении, архивировании новые файлы будут иметь странные имена из 2-го списка. Как заставить perl нормально работать с кириллицей? System: Windows 7, strawberry perl, v5.12.3 |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
В русской windows вроде всё в кодировке cp1251. Соответственно в ней читается и сохраняться должно в ней же.
А вообще давайте пример где проявляется проблема. |
|||
|
||||
| arzamaz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.8.2011 Репутация: нет Всего: нет |
Вот проблемный код:
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
arzamaz, у меня с вашим кодом всё впорядке. "Новый файл.exe" скопировался в "Новый файл.exe.bak".
Версия perl и windows такие же. А на консоль печатается неверно потому что кодировка консоли отличается от кодировки на файловой системе. Команда chcp должна помочь. |
|||
|
||||
| arzamaz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.8.2011 Репутация: нет Всего: нет |
У меня английская windows, проблема решилась после смены системной локали на русскую "Region and Language" -> "Current language for non-Unicode programs".
Не очень удобное решение. Есть способы манипулировать с файлами через Win32 api, пакеты Win32::Unicode::Dir и Win32::Unicode::File, но их не применить для архиватора Archive::Zip. Pfailed, Perl официально поддерживает юникод начиная с версии 5.6, можно ли заставить windows обращаться с perl'ом как с юникодовой программой? Это было бы лучшим решением проблемы. |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Видимо нельзя. Perl не дружит с виндовым юникодом в фс.
Вот багрепорт на эту тему: https://rt.perl.org/rt3/Public/Bug/Display.html?id=60888 |
|||
|
||||
| arzamaz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.8.2011 Репутация: нет Всего: нет |
Pfailed,
Огромное спасибо! Жаль, что не могу пока ставить плюсы ( |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Делал всякие установщики, в том числе для виндовс 98, XP, 2000, Vista.
Такой проблемы не возникало. |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |