मेरे पास एक निर्देशिका में स्थित एक फ़ाइल है, जिसमें विंडोज एक्सपी मशीन पर डैनिश वर्ण हैं। मैं स्ट्रॉबेरी पर्ल का उपयोग करता हूं और इस फ़ाइल को पढ़ना चाहता हूं। निम्नलिखित कोड ठीक काम करता है:स्ट्रॉबेरी perl में यूनिकोड के साथ लंबे फ़ाइल नाम वाली फ़ाइल को कैसे पढ़ा जाए Win32 :: यूनिकोड :: फ़ाइल का उपयोग नहीं कर रहा है?
use Win32::Unicode::File;
# Some code left out....
$fname = $mw -> getOpenFile(-filetypes=>$types);
my $fh = Win32::Unicode::File->new;
$fh->open('<', $fname);
GetOpenFile दिनचर्या रुपये से आता है। अब किसी कारण से Win32 :: यूनिकोड :: फ़ाइल में कुछ दुर्भाग्यपूर्ण दुष्प्रभाव हैं जिनके साथ मैं नहीं रह सकता (यह मेरी याददाश्त खाता है, "Out of memory" with simple Win32::Unicode::File readline loop and Strawberry Perl देखें)। अब अगर मैं Win32 :: यूनिकोड :: फ़ाइल इंटरफ़ेस के बिना फ़ाइल खोलने का प्रयास करता हूं तो मुझे कोई फ़ाइल नहीं मिलती है। इसका कारण यह है कि पथ गलत तरीके से घुसपैठ कर देता है। मैंने पथ को Perl: managing path encodings on Windows के अनुसार परिवर्तित करने का प्रयास किया है जो किसी कारण से काम नहीं करता है। मुझे इसे कैसे हल करना चाहिए? मैंने निम्नलिखित कोशिश की है:
use Encode;
# Some code left out....
$fname = $mw -> getOpenFile(-filetypes=>$types);
my $fh;
open($fh, '<', encode("utf8",$fname,Encode::FB_CROAK));
और यह काम नहीं करता है। कोई विचार?
अगर मैं अस्पष्ट हूं तो कृपया मुझे क्षमा करें।
सधन्यवाद, माइकल
विकल्प: http://p3rl.org/PerlIO::fse http://p3rl.org/Path::Class:: यूनिकोड – daxim
मेथिंक आपको यूटीएफ 16 को एन्कोडिंग के रूप में उपयोग करना चाहिए। डीबगर में $ fname जैसा दिखता है? –