यदि कोई प्रस्तुति परत यूनिकोड प्राप्त करती है, लेकिन इसे प्रस्तुत नहीं कर सकती है तो क्या होगा?


1

मैं वर्तमान में एक विश्वविद्यालय का छात्र हूँ जो कंप्यूटर विज्ञान का अध्ययन कर रहा है और हमारे नेटवर्किंग परीक्षण के लिए अध्ययन करते समय मुझे हमारी पुस्तक में एक दिलचस्प प्रश्न के साथ रखा गया था।

कहते हैं कि यूनिकोड के आविष्कार से पहले एक कंप्यूटर बनाया गया था, अब प्रस्तुति परत इस यूनिकोड को प्राप्त करता है लेकिन यह इसकी संभावित व्याख्या सीमा के बाहर है, इस कंप्यूटर पर भेजे गए डेटा के साथ क्या होगा? यह यह जानकारी कैसे प्रस्तुत करेगा?


"यूनिकोड के आविष्कार से पहले एक कंप्यूटर बनाया गया था" जो कि 1980 के दशक में होगा। यूनिकोड के पीछे मौलिक विचारों की तारीख 1987 तक, और बदले में काम के रूप में 1980 के रूप में किया से आकर्षित है, और यूनिकोड मानक का प्रथम खंड (एक सदी के एक चौथाई से अधिक साल पहले) 1991 में प्रकाशित हुआ था।
बजे एक CVn

जवाबों:


5

यह विशिष्ट कार्यक्रम पर निर्भर करता है। सबसे अच्छा वे कर सकते हैं।

कंप्यूटर में कोई एकल "प्रेजेंटेशन लेयर" नहीं है - यह ओएस और / या व्यक्तिगत कार्यक्रमों का सिर्फ एक अस्पष्ट रूप से परिभाषित हिस्सा है। प्रत्येक कार्यक्रम अलग है कि आप इसे परतों में कैसे अलग करेंगे (यदि बिल्कुल भी)। और एक कंप्यूटर के सभी सॉफ़्टवेयर को आवश्यक रूप से नई सुविधाओं के लिए अपडेट किया जा सकता है।

(व्यक्तिगत रूप से मैं ६- all परतों पर बहुत अधिक ध्यान नहीं दूंगा, उनके अलावा "सॉफ्टवेयर जो सत्र का उपयोग करता है"।)


इसके अलावा, महसूस करें कि यूनिकोड एक अमूर्त मानक है और नेटवर्क पर प्रसारित नहीं होता है - प्रोग्राम आमतौर पर विशिष्ट एन्कोडिंग, जैसे कि यूटीएफ -8 या यूटीएफ -16 भेजते हैं और प्राप्त करते हैं। इसलिए प्री-यूनिकोड कार्यक्रम में कहीं भी "आउट-ऑफ-रेंज" समस्या नहीं होगी, क्योंकि यह प्राप्त बाइट्स को इस तरह से व्याख्या नहीं करेगा।


प्रस्तुति में आमतौर पर कई व्यक्तिगत कार्य होते हैं, इसलिए जब मैं नीचे 'सॉफ़्टवेयर' कहता हूं, तो यह हर बार एक अलग घटक को संदर्भित कर सकता है। (उदाहरण के लिए, कार्यक्रम के आंतरिक प्रतिनिधित्व में UTF-8 की डिकोडिंग को libc, Pango द्वारा लेआउट, FreeType द्वारा फ़ॉन्ट रेंडरिंग द्वारा नियंत्रित किया जा सकता है।)

  • पहले डिकोडिंग आता है तो एक कार्यक्रम क्या करता है अगर उसे UTF-8 संदेश प्राप्त होता है जो उसे समझ में नहीं आता है? आमतौर पर, अगर यह पता है कि डेटा पाठ है , तो इसे डिकोड करने के लिए यह किसी प्रकार के फ़ॉलबैक एन्कोडिंग का उपयोग करेगा। उदाहरण के लिए, यदि कोई पुराना इंटरनेट ईमेल प्रोग्राम MIME टाइप देखता है text/plain; charset=utf-8, तो उसे पता चलेगा कि संदेश टेक्स्टुअल है, और इसके बाइट्स को ISO 8859-1 या Windows-1252 के रूप में व्याख्या करने का प्रयास करेगा, भले ही यह कचरा हो।

    (जैसा कि ऐसा होता है, UTF-8 और ISO 8859 दोनों ASCII पर आधारित हैं, इसलिए कई यूरोपीय ग्रंथ वास्तव में आधे रास्ते में पढ़ने योग्य डिकोडिंग के परिणामस्वरूप होते हैं। उदाहरण के लिए विकिपीडिया Mojibake लेख देखें ।)

    उस ने कहा, यह हमेशा काम नहीं करता है - कुछ प्रारूप दूसरों की तुलना में कठोर हैं। उदाहरण के लिए, यदि ASA.1 दस्तावेज़ में IA5String के बजाय UnicodeString है, तो पुराने कार्यक्रमों को यह पता नहीं चलेगा कि यह अभी भी पाठ या किसी अन्य प्रकार का डेटा है। इसलिए अगर कोई कोरियन कंपनी एसएसएल सर्टिफिकेट खरीदती है, तो कुछ पुराने ब्राउजर अपना नाम "संगठन: [अपरिचित]" बताएंगे।

  • फिर व्याख्या है। यदि सॉफ्टवेयर यूनिकोड के पुराने संस्करण का समर्थन करता है और अपनी ज्ञात सीमा के बाहर कोडपॉइंट्स के साथ पाठ प्राप्त करता है, तो यह तब तक कोई समस्या नहीं है जब तक वे स्क्रीन पर नहीं दिखाए जाते हैं - जिस बिंदु पर आप उनकी जगह " " प्रतिस्थापन प्रतीक देखेंगे।

    बेशक, अगर आप उदाहरण के लिए टेक्स्ट एडिटर को सब कुछ बड़ा करने के लिए कहते हैं, तो वह आउट-ऑफ-रेंज वर्णों के साथ ऐसा करने में सक्षम नहीं होगा। लेकिन यह अभी भी काम करेगा।

    (हाल ही में, कई "यूनिकोड-संगत" कार्यक्रमों और वेबसाइटों को यूसीएस -2 का आंतरिक रूप से उपयोग करने के लिए पाया गया (जो कि केवल यू + एफएफएफएफ तक जाता है)। यदि उन्हें यूटीएफ -16-एन्कोडेड पाठ ऊपर दिए गए कोडपॉइंट्स के साथ दिया गया है (जैसे कि फ़ूजी),। वे UTF-16 सरोगेट जोड़े की दो गैर-मान्यता प्राप्त कोडपॉइंट्स के रूप में व्याख्या करेंगे और "of" के बजाय " " दिखाएंगे।)

  • अंत में प्रदर्शित हो रहा है। यदि सॉफ़्टवेयर कोडकोड को डिकोड और मान्यता प्राप्त करता है, लेकिन इसमें वर्णों के लिए आवश्यक फोंट नहीं हैं , तो यह आमतौर पर एक प्लेसहोल्डर को भी आकर्षित करेगा। लिनक्स सॉफ्टवेयर आमतौर पर इसमें छोटे हेक्स नंबर (कोडपॉइंट नंबर) के साथ एक आयत खींचता है; macOS इसके बजाय एक विशेष फ़ॉलबैक फ़ॉन्ट का उपयोग करता है ; विंडोज पर आपको एक बॉक्स में प्रश्न चिह्न मिल सकता है।

अंत में, जब यह गैर-पाठ मीडिया (चित्र, वीडियो, ऑडियो) की बात आती है, तो प्रत्येक प्रारूप दूसरों से बहुत अलग होता है, इसलिए यदि यह मान्यता प्राप्त कार्यक्रम नहीं है तो बस एक प्लेसहोल्डर छोड़ दें और दिखाएं।


यह एक बेहतरीन जवाब है। आपका बहुत बहुत धन्यवाद। यह वास्तव में बहुत मददगार है। मेरे टेस्ट में इस तरह के सवाल आने की काफी संभावना है (यानी अगर यह एक निश्चित एन्कोडिंग प्रारूप को संभाल नहीं सकता है तो वर्णों का प्रतिनिधित्व कैसे किया जाएगा) और आपने मेरे लिए इसका उत्तर दिया है।
गॉडी

एक कार्यक्रम के चरम उदाहरण के लिए @Gordy यह व्याख्या करने में सक्षम नहीं है कि यह पाठ में क्या पढ़ रहा है, नोटपैड में .exe फ़ाइल खोलने का प्रयास करें।
बार्लोप

@barlop हाँ धन्यवाद। मैंने पहले किया है कि सबलेम टेक्स्ट में यह निश्चित नहीं है कि यह नोटपैड में समान है।
गोडी

@Gordy आपको निश्चित नहीं होना चाहिए। यह जाँच करने के लिए बहुत जल्दी है।
बार्लॉप

@barlop मैं लिनक्स का उपयोग कर रहा हूं।
गॉर्डन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.