У меня есть папка на моем компьютере под управлением Windows 7 под названием «フ ォ ル ダ». В нем есть файл под названием «foo.txt», и я помещаю в него несколько строк текста. Я пытаюсь это прочитать, что, по-видимому, очень липкая проблема. Ответ на related question был простой выглядящий способ, чтобы открыть файл:открыть файл в папке с именем юникода в Windows
use utf8;
use Encode::Locale;
use Encode;
my $path = 'C:\Users\my name\Desktop\logrus_workspace\フォルダ\foo.txt';
my $new_path = encode(locale_fs => $path);
print $new_path;
open my $fh, '<', $new_path
or die $!;
Звонок в open
плашки с Invalid argument
. Любая идея, какую конкретную проблему указывает это сообщение, и как я могу открыть этот файл с именем Unicode?
Perl встроенные, такие как 'open' используют интерфейс« (A) NSI »для системы. Вам нужно будет закодировать строку согласно вашей кодовой странице ANSI, что, вероятно, невозможно для этих символов. Это означает, что вам нужно будет использовать интерфейс (W) ide, CreateFileW, как это предусмотрено Win32API :: File. Да, это отстой. – ikegami
('CreateFile' также используется для открытия существующих файлов. Он создает файл * handle *.) – ikegami
Теперь я попробовал кучу модулей для этого и поселился на Win32 :: LongPath. Автор очень отзывчив, и он просто работает. Я расскажу об этом позже. –