Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^3: Accent file names issue

by hippo (Bishop)
on Sep 20, 2017 at 14:57 UTC ( [id://1199751]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Accent file names issue
in thread Accent file names issue

Try this tiny test script and you will see.

I see that every one of those tests fails:

$ perl 1199749.pl 1..8 Malformed UTF-8 character (unexpected non-continuation byte 0xe3, imme +diately after start byte 0xe7) at 1199749.pl line 12. Malformed UTF-8 character (unexpected non-continuation byte 0x6f, imme +diately after start byte 0xe3) at 1199749.pl line 12. looking for directory (dir_without_codes): documentao not ok 1 - With codes (1) # Failed test 'With codes (1)' # at 1199749.pl line 17. not ok 2 - Without codes (2) # Failed test 'Without codes (2)' # at 1199749.pl line 18. not ok 3 - Without codes (3) # Failed test 'Without codes (3)' # at 1199749.pl line 19. not ok 4 - Without codes (4) # Failed test 'Without codes (4)' # at 1199749.pl line 24. not ok 5 - Glob matches with codes (5) # Failed test 'Glob matches with codes (5)' # at 1199749.pl line 28. # got: 'documentação' # expected: 'documentação' not ok 6 - Glob matches without codes (6) # Failed test 'Glob matches without codes (6)' # at 1199749.pl line 29. # got: 'documentação' # expected: 'documentao' not ok 7 - Glob matches without codes (7) # Failed test 'Glob matches without codes (7)' # at 1199749.pl line 30. # got: 'documentação' # expected: 'documentao' not ok 8 - Without codes (8) # Failed test 'Without codes (8)' # at 1199749.pl line 32. # Looks like you failed 8 tests of 8.

Unfortunately it appears that it isn't portable. I take it that it runs better on Windows?

Replies are listed 'Best First'.
Re^4: Accent file names issue
by Anonymous Monk on Sep 21, 2017 at 14:19 UTC

    As stated, this only works on Windows, also the OP asked for support for Windows

    But on Windows I myself would prefer to use Win32::LongPath, because it supports real Unicode Directories and also filename up to 32000 chars

    Have a look on the following script: (You have to create these directories first)

    use strict;
    use warnings;
    
    use utf8;
    use feature 'unicode_strings';
    use charnames ':full';
    
    binmode(STDOUT, ":unix:utf8");
    
    
    my @strange_dirs = (
    					'documentação',
    					'AC_RAÍZ_CERTICÁMARA_S',
    					'Катюша',
    					'Катюша',
    					'москва',
    					'ελληνικά-русский',
    										
    );
    
    for my $dir (@strange_dirs)	{
    	print "Looking for directory: [$dir]\n";
    
    	if (-d decode_u8($dir)) {
    		print "Directory found: [$dir]\n";
    	}
    	else	{
    		print "---> Error: Directory [$dir] not found <---\n";
    	}
    }
    
    print "---- now the same with Win32::Longpath ----\n";
    
    use Win32::LongPath;
     
    for my $dir (@strange_dirs)	{
    	print "Looking for directory: [$dir]\n";
    
    	if (testL ('d', $dir)) {	# same as -d $dir
    		print "Directory found: [$dir]\n";
    	}
    	else	{
    		print "---> Error: Directory [$dir] not found <---\n";
    	}
    }
     
    
    
    
    sub encode_u8 { my $s = shift; utf8::encode($s); $s };
    sub decode_u8 { my $s = shift; utf8::decode($s); $s };
    
    

    You will see that Win32::LongPath correctly displays all these directories, but -d decode_u8($dir) doesn't.

    My test Environment is: Windows 10 Version 10.0.14393, Perl 64-bit (revision 5 version 22 subversion 2)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1199751]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (8)
As of 2024-04-19 11:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found