मैं पहले से ही कैसे UTF-8 एनकोड करने के लिए लाइन द्वारा एक फ़ाइल लाइन के गैर UTF8 एन्कोड सामग्री परिवर्तित करने के लिए, निम्न कोड की तरह कुछ का उपयोग कर पता:मैं पर्ल में एक इनपुट फ़ाइल को यूटीएफ -8 एन्कोडिंग में कैसे परिवर्तित कर सकता हूं?
# outfile.txt is in GB-2312 encode
open my $filter,"<",'c:/outfile.txt';
while(<$filter>){
#convert each line of outfile.txt to UTF-8 encoding
$_ = Encode::decode("gb2312", $_);
...}
लेकिन मुझे लगता है पर्ल सीधे पूरे सांकेतिक शब्दों में बदलना कर सकते हैं UTF-8 प्रारूप करने के लिए इनपुट फ़ाइल, कुछ की तरह
#outfile.txt is in GB-2312 encode
open my $filter,"<:utf8",'c:/outfile.txt';
(पर्ल कहते हैं, "UTF8" \ xD4 "यूनिकोड को मैप नहीं है" की तरह कुछ)
और
तो मैं कोशिश की हैopen my $filter,"<",'c:/outfile.txt';
$filter = Encode::decode("gb2312", $filter);
वे काम नहीं करते (पर्ल "ReadLine() बंद filehandle पर! कहते हैं)। लेकिन इनपुट फ़ाइल को यूटीएफ -8 एन्कोड में सीधे रूपांतरित करने का कोई तरीका है?
अद्यतन:
ऐसा लगता है कि चीजों के रूप में सरल रूप में मैंने सोचा था कि नहीं कर रहे हैं। अब मैं इनपुट फ़ाइल को यूटीएफ -8 कोड में चौराहे के रास्ते में परिवर्तित कर सकता हूं। मैं पहले इनपुट फ़ाइल खोलता हूं और फिर इसकी सामग्री को यूटीएफ -8 पर एन्कोड करता हूं और फिर आउटपुट को एक नई फाइल में खोलता हूं और फिर आगे की प्रक्रिया के लिए नई फाइल खोलता हूं। इस कोड है:
open my $filter,'<:encoding(gb2312)','c:/outfile.txt';
open my $filter_new, '+>:utf8', 'c:/outfile_new.txt';
print $filter_new $_ while <$filter>;
while (<$filter_new>){
...
}
लेकिन यह बहुत ज्यादा काम है और यह और भी अधिक परेशानी है की तुलना में बस लाइन द्वारा $ फिल्टर लाइन की सामग्री सांकेतिक शब्दों में बदलना।
जब भी आप किसी प्रश्न में चेतावनी संदेश का जिक्र करते हैं, तो प्रश्न में चेतावनी संदेश शामिल करें। :) –
@brian, सुझाव के लिए धन्यवाद। – Mike
सटीक चेतावनी संदेश का उपयोग करना सबसे अच्छा है :) तो, उस चेतावनी के साथ, आपको अपने खुले परिणाम का परिणाम देखना होगा (जिसे आपको हमेशा वैसे भी करना चाहिए)। –