Michael Ludwig schrieb am 07.01.2012 um 21:04 (+0100): > How do you save a file with a Chinese or other name requiring > Unicode using Active Perl?
> my $chars = 'Катюша'; # say length $chars; > > my $count = 0; > for ( '', qw/UTF-16 UTF-16BE UTF-16LE UTF-8/ ) { > say 'encoding: ', $_; > my $n1 = $chars . '.' . ++$count . '.txt'; > my $n2 = $_ ? encode( $_, $n1 ) : $n1; > if ( open my $fh, '>:encoding(UTF-16)', $n2 ) { None of these approaches using open() will work correctly with ActiveState Perl. What will work is the method detailed here: How do I create a Unicode directory on Windows using Perl? http://stackoverflow.com/a/2185032 - Feb 2 '10 - Sinan Ünür To summarize: use Win32.pm or Win32::API. use utf8; use strict; use warnings; use Win32; # chcp 65001 # binmode STDOUT, ':encoding(UTF-8)'; # binmode STDERR, ':encoding(UTF-8)'; for ( qw/ Волгогра́д москва / ) { Win32::CreateDirectory( $_ ) or warn "CreateDirectory $_: $^E"; } So use one of those modules for ActiveState Perl and just straight open() for Cygwin. Michael > Cygwin perl 5.10.1, by the way, displayed no errors and got it right: > > 07.01.2012 20:51 16 Катюша.1.txt > 07.01.2012 20:51 16 Катюша.5.txt > > You can feed either a character string or a UTF-8 octet string to this > Cygwin perl.exe open() and it creates the proper filename, proving > that it's not technically impossible. :) _______________________________________________ ActivePerl mailing list ActivePerl@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs