C:\Users\ken\tmp\pm_11149351_unicode_filenames>dir Volume in drive C is Primary Drive Volume Serial Number is 5A0C-01CD Directory of C:\Users\ken\tmp\pm_11149351_unicode_filenames 04-Jan-23 15:06 . 04-Jan-23 15:06 .. 04-Jan-23 14:18 337 mkfiles.pl 04-Jan-23 15:03 271 mvfiles.pl 2 File(s) 608 bytes 2 Dir(s) 1,533,002,100,736 bytes free C:\Users\ken\tmp\pm_11149351_unicode_filenames>more mkfiles.pl #!perl use strict; use warnings; use autodie; my $emoji_airplane = "\x{2708}\x{FE0F}"; my $emoji_envelope = "\x{2709}\x{FE0F}"; my @fnames = ( 'AIR_2708_FE0F', "___ $emoji_airplane $emoji_airplane", 'ENV_2709_FE0F', "___ $emoji_envelope $emoji_envelope", ); for my $fname (@fnames) { open my $fh, '>', $fname; } C:\Users\ken\tmp\pm_11149351_unicode_filenames>perl mkfiles.pl #### C:\Users\ken\tmp\pm_11149351_unicode_filenames>more mvfiles.pl #!perl use strict; use warnings; use autodie; use File::Copy 'move'; opendir(my $dh, '.'); for my $fname (readdir $dh) { next if $fname =~ /^[\x00-\x7f]+$/; (my $new_name = $fname) =~ s/([^\x00-\x7f])/'+U' . ord($1) . 'U+'/eg; move($fname, $new_name); } C:\Users\ken\tmp\pm_11149351_unicode_filenames>perl mvfiles.pl C:\Users\ken\tmp\pm_11149351_unicode_filenames>dir Volume in drive C is Primary Drive Volume Serial Number is 5A0C-01CD Directory of C:\Users\ken\tmp\pm_11149351_unicode_filenames 04-Jan-23 15:35 . 04-Jan-23 15:35 .. 04-Jan-23 15:32 0 AIR_2708_FE0F 04-Jan-23 15:32 0 ENV_2709_FE0F 04-Jan-23 14:18 337 mkfiles.pl 04-Jan-23 15:03 271 mvfiles.pl 04-Jan-23 15:32 0 ___ +U226U++U156U++U136U++U239U++U184U++U143U+ +U226U++U156U++U136U++U239U++U184U++U143U+ 04-Jan-23 15:32 0 ___ +U226U++U156U++U137U++U239U++U184U++U143U+ +U226U++U156U++U137U++U239U++U184U++U143U+ 6 File(s) 608 bytes 2 Dir(s) 1,532,999,979,008 bytes free