Tôi có tệp nằm trong thư mục, với các ký tự danish trong đó, trên máy tính Windows XP. Tôi sử dụng Strawberry perl và muốn đọc tệp này. Mã sau hoạt động tốt:Cách đọc tệp có tên tệp dài với unicode trong Strawberry perl không sử dụng Win32 :: Unicode :: File?
use Win32::Unicode::File;
# Some code left out....
$fname = $mw -> getOpenFile(-filetypes=>$types);
my $fh = Win32::Unicode::File->new;
$fh->open('<', $fname);
Thông lệ getOpenFile đến từ Tk. Bây giờ vì một số lý do Win32 :: Unicode :: File có một số tác dụng phụ không may mà tôi không thể sống với (nó ăn bộ nhớ của tôi, xem "Out of memory" with simple Win32::Unicode::File readline loop and Strawberry Perl). Bây giờ nếu tôi cố gắng để mở tập tin mà không có giao diện Win32 :: Unicode :: File tôi nhận được một tập tin không tìm thấy. Lý do cho điều này là con đường được intepreted không chính xác. Tôi đã thử chuyển đổi đường dẫn theo Perl: managing path encodings on Windows không hoạt động vì một số lý do. Làm thế nào tôi nên giải quyết điều này? Tôi đã thử những điều sau đây:
use Encode;
# Some code left out....
$fname = $mw -> getOpenFile(-filetypes=>$types);
my $fh;
open($fh, '<', encode("utf8",$fname,Encode::FB_CROAK));
và nó không hoạt động. Bất kỳ ý tưởng?
Hãy tha thứ cho tôi nếu tôi không rõ ràng.
Trân trọng! Michael
Các lựa chọn thay thế: http://p3rl.org/PerlIO::fse http://p3rl.org/Path::Class::Unicode – daxim
methinks bạn nên sử dụng UTF16 làm mã hóa. $ Fname trông như thế nào trong trình gỡ lỗi? –