का उपयोग करते हुए utf8 नामों के साथ छवियों की प्रतिलिपि बनाएँ/नाम बदलें मैं बैच नाम बदलने और सीएसवी फ़ाइल के आधार पर छवियों की प्रतिलिपि बनाने के लिए एक स्क्रिप्ट पर काम कर रहा हूं। सीएसवी में कॉलम 1: पुराना नाम और कॉलम 2 होता है: नया नाम। मैं सीएसवी फ़ाइल का उपयोग पर्ल स्क्रिप्ट के लिए इनपुट के रूप में करना चाहता हूं ताकि यह पुराना नाम जांच सके और नए नाम का उपयोग नए नाम में एक प्रतिलिपि बना सके। समस्या यह है कि (मुझे लगता है) मुझे छवियों के साथ करना है। वे ß आदि जैसे UTF8 वर्ण हो जब मैं चलाने स्क्रिप्ट इसे बाहर इस प्रिंट: Barfu├ƒg├ñsschen जहां यह होना चाहिए Barfußgässchen और निम्न त्रुटि:सीएसवी फ़ाइल
Unsuccessful stat on filename containing newline at C:/Perl64/lib/File/Copy.pm line 148, <$INFILE> line 1.
Copy failed: No such file or directory at X:\Script directory\correction.pl line 26, <$INFILE> line 1.
मैं जानता हूँ कि यह Binmode UTF8 के साथ क्या करना है, लेकिन यहां तक कि जब मैं एक साधारण स्क्रिप्ट की कोशिश (इसे यहाँ देखा: How can I output UTF-8 from Perl?):
use strict;
use utf8;
my $str = 'Çirçös';
binmode(STDOUT, ":utf8");
print "$str\n";
इसे बाहर प्रिंट इस: Airth ÷ रों
यह मेरी पूरी स्क्रिप्ट है, किसी ने मुझे समझा सकता है मैं कहाँ जा रहा हूँ गलत? (यह कोड की सबसे साफ नहीं है क्योंकि मैं सामान का परीक्षण कर रहा था)।
use strict;
use warnings;
use File::Copy;
use utf8;
my $inputfile = shift || die "give input!\n";
#my $outputfile = shift || die "Give output!\n";
open my $INFILE, '<', $inputfile or die "In use/not found :$!\n";
#open my $OUTFILE, '>', $outputfile or die "In use/not found :$!\n";
binmode($INFILE, ":encoding(utf8)");
#binmode($OUTFILE, ":encoding(utf8)");
while (<$INFILE>) {
s/"//g;
my @elements = split /;/, $_;
my $old = $elements[1];
my $new = "new/$elements[3]";
binmode STDOUT, ':utf8';
print "$old | $new\n";
copy("$old","$new") or die "Copy failed: $!";
#copy("Copy.pm",\*STDOUT);
# my $output_line = join(";", @elements);
# print $OUTFILE $output_line;
#print "\n"
}
close $INFILE;
#close $OUTFILE;
exit 0;
अपने पहले स्निपेट के बारे में: क्या .pl फ़ाइल स्वयं utf8 में एन्कोड किया गया है? 'Utf8' pragma का उपयोग करें पर्ल को बताता है कि आपका स्रोत कोड utf8 में लिखा गया है। यह डेटा से संबंधित नहीं है। – simbabque
आप आउटपुट को कहां प्रिंट कर रहे हैं? एक लिनक्स खोल? इसके अलावा, आप फाइल कैसे बना रहे हैं? –
मैं पुष्टि कर सकता हूं कि आपका पहला स्निपेट मेरे लिनक्स शैल पर LANG सेट के साथ 'en_GB.UTF-8' और पुटी सेट यूटीएफ -8 पर ठीक काम करता है। मैंने उसी शेल में वीआईएम का उपयोग करके फ़ाइल बनाई है। –