J'ai un dossier sur mon ordinateur USA Windows 7 intitulé "フ ォ ル ダ". Il y a un fichier appelé "foo.txt", et j'y ai mis quelques lignes de texte. J'essaie de le lire, ce qui est apparemment un problème très collant. Une réponse à une related question avait une méthode simple à la recherche d'ouvrir le fichier:ouvrir le fichier dans le dossier avec le nom unicode sous 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 $!;
L'appel à open
meurt avec Invalid argument
. N'importe quelle idée quel problème spécifique ce message indique, et comment je peux obtenir ce fichier unicode nommé ouvert?
Les intégrations Perl telles que 'open' utilisent l'interface" (A) NSI "du système. Vous devrez encoder la chaîne selon votre page de code ANSI, ce qui est probablement impossible pour ces caractères. Cela signifie que vous devrez utiliser l'interface (W) ide, 'CreateFileW', fournie par Win32API :: File. Oui, ça craint. – ikegami
('CreateFile' est aussi utilisé pour ouvrir des fichiers existants.) * – ikegami
J'ai maintenant essayé un tas de modules pour cela, et je me suis installé sur Win32 :: LongPath. L'auteur est très réactif, et ça fonctionne. Je vais écrire plus de détails à ce sujet plus tard. –