in reply to Non asci character and system call

use strict; use utf8; use Encode 'encode'; my $commandline = qq{start "" "$DocumentPath.pdf"}; system( encode 'CP1251', $commandline ) == 0 or die encode 'CP866', qq{Couldn't launch '$commandline': $!/$?};

Replies are listed 'Best First'.
Re^2: Non asci character and system call
by Anonymous Monk on Nov 09, 2017 at 07:46 UTC

    Thank you. My machine uses CP1251 (just tested), but telling the system to encode the string as you suggested turns out to fire "Couldn't launch '$commandline': $!/$?" the same.

      Works for me. Is your $commandline as simple as shown? It may have characters outside of ANSI CP, or characters that need escaping (quoting). Try pasting its content directly to command prompt and see if it's working. Or maybe file is not in current directory.

      use strict;
      use warnings;
      use feature 'say';
      use utf8;
      use Encode 'encode';
      use Win32;
      
      say Win32::GetACP;      # 'ANSI Code Page'
      say Win32::GetOEMCP;    # 'OEM Code Page'
      
      my $commandline = qq{start "" "сервис.pdf"};
      system( encode 'CP'. Win32::GetACP, $commandline ) == 0
      or die encode 'CP'. Win32::GetOEMCP, qq{Couldn't launch '$commandline': $!/$?};