पता लगाने के लिए कि कौन सी अज्ञात उपयोग करता है, आपको बस कोशिश करने और देखने की ज़रूरत है। मॉड्यूल Encode::Detect और Encode::Guess स्वचालित करें। (यदि आपको परेशानी संकलन एनकोड :: का पता लगाने है, तो इसकी कांटा Encode::Detective आज़मा सकते हैं।)
use Encode::Detect::Detector;
my $unknown = "\x{54}\x{68}\x{69}\x{73}\x{20}\x{79}\x{65}\x{61}\x{72}\x{20}".
"\x{49}\x{20}\x{77}\x{65}\x{6e}\x{74}\x{20}\x{74}\x{6f}\x{20}".
"\x{b1}\x{b1}\x{be}\x{a9}\x{20}\x{50}\x{65}\x{72}\x{6c}\x{20}".
"\x{77}\x{6f}\x{72}\x{6b}\x{73}\x{68}\x{6f}\x{70}\x{2e}";
my $encoding_name = Encode::Detect::Detector::detect($unknown);
print $encoding_name; # gb18030
use Encode;
my $string = decode($encoding_name, $unknown);
मुझे लगता है encode 'ascii'
गैर- ASCII वर्ण से छुटकारा पाने के लिए एक लंगड़ा समाधान है। सब कुछ प्रश्न चिह्नों के साथ प्रतिस्थापित किया जाएगा; यह उपयोगी होने के लिए बहुत हानिकारक है।
# Bad example; don't do this.
use utf8;
use Encode;
my $string = 'This year I went to 北京 Perl workshop.';
print encode('ascii', $string); # This year I went to ?? Perl workshop.
आप पठनीय ASCII पाठ चाहते हैं, मैं Text::Unidecode बजाय सलाह देते हैं। यह भी एक हानिकारक एन्कोडिंग है, लेकिन ऊपर encode
के रूप में भयानक नहीं है।
use utf8;
use Text::Unidecode;
my $string = 'This year I went to 北京 Perl workshop.';
print unidecode($string); # This year I went to Bei Jing Perl workshop.
हालांकि, अगर आप इसकी सहायता कर सकते हैं तो उन हानिकारक एन्कोडिंग से बचें। यदि आप बाद में ऑपरेशन को रिवर्स करना चाहते हैं, तो PERLQQ
या XMLCREF
में से कोई एक चुनें।
use utf8;
use Encode qw(encode PERLQQ XMLCREF);
my $string = 'This year I went to 北京 Perl workshop.';
print encode('ascii', $string, PERLQQ); # This year I went to \x{5317}\x{4eac} Perl workshop.
print encode('ascii', $string, XMLCREF); # This year I went to 北京 Perl workshop.
मुझे सही अगर मैं गलत हूँ डिक्रिप्ट करने के लिए भी निम्नलिखित कोड का उपयोग कर सकते है, लेकिन मैंने सोचा था कि यूनिकोड के पूरे मुद्दे यह नहीं है कि है एक "एन्कोडिंग" - सबकुछ वहां है। –
आपके पास यूनिकोड स्ट्रिंग नहीं है। आपके पास बाइट्स से भरा फ़ाइल है जो कुछ एन्कोडिंग में यूनिकोड स्ट्रिंग का प्रतिनिधित्व करती है। यदि आप फ़ाइल के एन्कोडिंग को नहीं जानते हैं, तो फ़ाइल की शुरुआत में बाइट-ऑर्डर-मार्कर की जांच करें। यदि कोई बीओएम नहीं है, तो आप भाग्य से बाहर हैं। –
ऐसा लगता है कि आप कम से कम दो अलग-अलग प्रश्न पूछ रहे हैं (पहला और दूसरा पैराग्राफ)। – Amnon