Hi, I'm trying to figure out if I can handle Unicode filenames on Windows using Perl 5.8.4, and if so, how.
I've read a couple of other threads on this list about this issue, but
as far as I can see no firm conclusion has yet been reached on what
might be done with regard to putting back (in a saner way) the
functionality that was provided by the -C option prior to 5.8.1.
I am, of course, interested to hear what the latest thinking is if any
thinking has been done about this issue recently, but what I really want
to know is what, if anything, can I do /now/, using Perl 5.8.4.
I'm running on Windows XP (English language setup), and I have a
directory full of files with all sorts of non-cp1252 characters in their
names. Windows Explorer displays them all very nicely (see input.png
attached).
But when I use readdir() to list them, I find that each of the
non-cp1252 characters get replaced with a "?", so then, of course, I
can't do anything with the filenames returned (like open them). The
attached output.png is the output of the following program (run in a
Command Prompt with the code page changed from cp850 to cp1252):
opendir my $dh, '.' or die "Can't read cwd: $!";
my @filenames = grep { /^\d\d / } readdir $dh;
closedir $dh;
foreach my $filename (@filenames) {
printf "[%6s] %s\n", (-f $filename ? 'OK' : 'NOT OK'), $filename;
}
So my question is: How can I deal with these files?
I've tried using Perl scalars containing UTF-8, UTF-16LE and UTF-16BE
encodings of the filenames, but none of them work either. Indeed, if I
try to write a new file with a name constructed in those ways, then the
name of the file actually created is simply the sequence of bytes that
make up those encodings.
- Steve
------------------------------------------------
Radan Computational Ltd.
The information contained in this message and any files transmitted with it are
confidential and intended for the addressee(s) only. If you have received this
message in error or there are any problems, please notify the sender immediately. The
unauthorized use, disclosure, copying or alteration of this message is strictly
forbidden. Note that any views or opinions presented in this email are solely those
of the author and do not necessarily represent those of Radan Computational Ltd. The
recipient(s) of this message should check it and any attached files for viruses: Radan
Computational will accept no liability for any damage caused by any virus transmitted
by this email.
<<inline: input.png>>
<<inline: output.png>>
