#!/usr/bin/perl use strict; use Win32API::File qw( :ALL ); use utf8; use Encode; #Notice the \0 at the end of the file name. Necessary but I don't know why. my $win32_handle = Win32API::File::CreateFileW(Encode::encode("UTF-16LE", "C:\\test\\" . " #### " . "\\test.txt\0"), FILE_READ_DATA, 0, [], OPEN_EXISTING, 0, []); my $perl_handle = 0; #This translates the win32 file handle to a Perl file handle Win32API::File::OsFHandleOpen($perl_handle, $win32_handle, "r"); print <$perl_handle>; if ($^E) { print "Error: " . $^E }