in reply to Re^3: Handling file path with unusual characters
in thread Handling file path with unusual characters

I'm trying to find as much information as possible before posting a question and in this matter I'm unable to find a solution to my problem.

I checked the links but still no luck. I feel that this is an issue that should arise rather often and therefore I hope and believe that there's an off-the-shelf solution for this. I thought that the link in the posts above would help me but the test specified there to find the encoding used was unsuccessfull.

Anyone that have had this problem and managed to solve it?

  • Comment on Re^4: Handling file path with unusual characters

Replies are listed 'Best First'.
Re^5: Handling file path with unusual characters
by Corion (Patriarch) on Apr 04, 2011 at 08:48 UTC

    You have received all the general wisdom applicable to your situation. If you don't tell us more details, how can we give you hints how to approach your concrete problem better?

      Okey, I'll give it one more shot, then. First of all I'm on a Windows XP machine and my script will exclusively be used on Windows platforms. I'm using ActivePerl and I'm constructing a GUI where the user shall specify the path to a file. If strange characters are used in the path, my script does not work. Below is a simple example that does not work due to the characters in the path. If I select a path without é and ö it works.

      #!/usr/bin/perl use warnings; use strict; my $path = 'C:\Idéer\Första\test.txt'; my @file = (); open(FILE,$path); @file = <FILE>; close(FILE);

      The error message is:

      readline() on closed filehandle FILE at C:\test\testing.pl line 10

      Is it possible now to give me some hints on how to solve this?

      Thanks in advance!

        The first warning happens, because you don't check the return value of open. Use the following instead:

        open FILE, '<', $path or die "Couldn't open '$path': $!";

        The failure you will then discover happens because Perl expects filenames to have no encoding respectively passes the data from the script through directly to the OS, but your script is likely encoded in something other than Latin-1 or whatever Windows uses as the current default locale. See Opening files with japanese/chinese chars in filename for related discussion.