Interesting - Thanks for Sharing the Solution! Am 10.01.2012 um 23:16 schrieb Michael Ludwig <mil...@gmx.de>:
> 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 _______________________________________________ ActivePerl mailing list ActivePerl@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs