2013-03-05 12 views
9

मैंने सोचा कि चरित्र सेट का नाम "यूनिकोड" था और "यूटीएफ -8" यूनिकोड चरित्र सेट के एक विशेष एन्कोडिंग का नाम था, लेकिन मुझे अक्सर "एन्कोडिंग" और "वर्णसेट" शब्द एक दूसरे के रूप में उपयोग किए जाते थे यूटीएफ -8 का जिक्र करते समय।क्या यूटीएफ -8 एक एन्कोडिंग या एक चरित्र सेट है?

उदाहरण के लिए

,

<meta charset="UTF-8"> 

बनाम

<?xml version="1.0" encoding="UTF-8" ?> 

उत्तर

12

क्या यूटीएफ -8 एक एन्कोडिंग या एक चरित्र सेट है?

यूटीएफ -8 एक एन्कोडिंग है और उस शब्द का उपयोग आरएफसी में किया जाता है जो इसे नीचे उद्धृत करता है।


मैं अक्सर देखते हैं शब्द "एन्कोडिंग" और "चारसेट" interchangeably उपयोग किया

यूनिकोड करने से पहले, यदि आप सिरिलिक या यूनानी की तरह एक वर्णमाला † उपयोग करना चाहता था, आप का उपयोग करने के लिए आवश्यक एक एन्कोडिंग जो केवल उस वर्णमाला में वर्णों को एन्कोड किया गया है। इस प्रकार, एन्कोडिंग और वर्णसेट अक्सर conflated थे, लेकिन वे अलग-अलग चीजों का मतलब है।

हालांकि, यूनिकोड आमतौर पर एकमात्र चरित्र सेट होता है जिसके बारे में आपको चिंता करने की आवश्यकता होती है क्योंकि इसमें क्लिंगन को छोड़कर, अधिकांश लिखित भाषाओं के लिए वर्ण शामिल होंगे।

† - वर्णमाला, चरित्र सेट जहां वर्ण बोली जाने वाली भाषा में सीधे सुनने के लिए मेल खाते हैं।


एक चरित्र सेट एक प्रश्न के लिखित भाषा में वर्णों, प्रतीक, ग्लिफ़, या अन्य के निशान के लिए कोड-इकाइयों (पूर्णांक) से एक मानचित्रण है। यूनिकोड एक चरित्र सेट है जो 21 बी पूर्णांक को यूनिकोड कोडपॉइंट्स पर मैप करता है। यूनिकोड कंसोर्टियम के glossary इस प्रकार यह बताता है:

यूनिकोड

  1. दुनिया की भाषाओं के सभी लिखित रूप में उपयोग किए गए वर्णों के डिजिटल प्रतिनिधित्व के लिए मानक। यूनिकोड किसी भी भाषा में पाठ को संग्रहीत करने, खोजने और इंटरचेंज करने के लिए एक समान माध्यम प्रदान करता है। यह सभी आधुनिक कंप्यूटरों द्वारा उपयोग किया जाता है और इंटरनेट पर पाठ संसाधित करने की नींव है।यूनिकोड कंसोर्टियम द्वारा विकसित और रखरखाव किया जाता है: http://www.unicode.org
  2. यूनिकोड कंसोर्टियम द्वारा विकसित और रखरखाव सॉफ्टवेयर अंतर्राष्ट्रीयकरण और स्थानीयकरण मानकों पर लागू एक लेबल।

एक एन्कोडिंग तार करने के लिए तार से एक मानचित्रण है। यूटीएफ -8 एक एन्कोडिंग है जो कोड-पॉइंट्स (21 बी पूर्णांक) के तारों के लिए बाइट्स (8 बी पूर्णांक) के तारों को मानचित्र करता है। यूनिकोड कंसोर्टियम इसे "character encoding scheme" कहते हैं और इसे RFC 3629 में परिभाषित किया गया है।

यूसीएस की मूल रूप से प्रस्तावित एन्कोडिंग, तथापि, कई मौजूदा अनुप्रयोगों और प्रोटोकॉल के साथ संगत नहीं थे, और इस UTF-8 के विकास

+1

माइनर नाइटपिक: यूनिकोड 21-बिट पूर्णांक का उपयोग करता है। –

+0

@ आर। मार्टिन्होफर्नैंड्स, बिल्कुल सही। धन्यवाद। –

+0

क्या यह नहीं था [वर्णमाला और एन्कोडिंग के बीच भेद] यूनिकोड से पहले भी लागू होता है? उदाहरण के लिए चरित्र सेट जेआईएस एक्स 0208 ईयूसी-जेपी और शिफ्ट-जेस – Esailija

2

यूनिकोड स्टैंडर्ड यह कॉल एक एन्कोडिंग रूप या एक एन्कोडिंग स्कीम। यूनिकोड में वर्णों का एक सेट होता है (जिसे यूनिकोड कैरेक्टर सेट या यूनिवर्सल कैरेक्टर सेट के नाम से जाना जाता है), और सभी यूटीएफ एन्कोडिंग फॉर्म और एन्कोडिंग स्कीम उस सेट के सभी पात्रों को एन्कोड कर सकते हैं।

जैसा कि कई अन्य शर्तों के साथ होता है, प्रोग्रामर को यहां और वहां केवल अनुचित शर्तों की प्रवृत्ति दिखाई देती है, और यह इसका एक और उदाहरण है।

2

UTF-8 एक है के लिए प्रेरित किया एन्कोडिंग। एन्कोडिंग को अक्सर चरित्र सेट कहा जाता है, और इसलिए कई प्रोटोकॉल पैरामीटर नाम charset पैरामीटर के लिए उपयोग करते हैं जो वर्ण एन्कोडिंग निर्दिष्ट करता है। इस प्रकार, charset सिर्फ एक पहचानकर्ता है। unicode कोड पॉइंट्स जो सार अक्षर द्योतक - - बाइट्स के एक सेट में

4

UTF-8 है कि यह सार पूर्णांकों का एक अनुक्रम को कूटबद्ध अर्थ में, एक एन्कोडिंग है। (यूनिकोड चश्मे के माध्यम से, आप कह सकते हैं कि ISO-8859-1 जैसे 'चरित्र सेट' भी एक टेबल-संचालित 'एन्कोडिंग' है, इस अर्थ में कि यह कोडों की एक छोटी संख्या को बाइट्स के रूप में एन्कोड करता है, लेकिन यह शब्दावली के दुरुपयोग की ओर अग्रसर है , और शायद बहुत उपयोगी नहीं है)।

पूर्णांक का अनुक्रम (कुछ मौलिक अर्थ में) 'यूनिकोड स्ट्रिंग' है, लेकिन इन्हें डिस्क पर सहेजने या उन्हें नेटवर्क पर भेजने के लिए, आपको उन्हें बाइट्स के अनुक्रम के रूप में एन्कोड करने की आवश्यकता है। यूटीएफ -8 ऐसा करने का एक तरीका है, यूटीएफ -16 एक और है: एक यूनिकोड स्ट्रिंग को बाइट्स की दो अलग-अलग धाराओं के रूप में दर्शाया जाएगा यदि यह दो अलग-अलग तरीकों से एन्कोड किया गया है।


एक से अधिक ठीक जवाब यहाँ हैं, लेकिन सिर्फ कल मैं कुछ न्यूनतम आकार के लिए नीचे इस मुद्दे उबाल करने की कोशिश कर कुछ समय बिताया है, तो यह है कि पाठ का पुन: उपयोग करने के लिए एक खुश अवसर प्रदान करता है:

योएल Spolsky के लेख The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) पर काफी अच्छा है, मुझे लगता है। यह पहले (निश्चित रूप से) पहले उल्लेख किया गया है, लेकिन यह दोहराना भालू है। मुझे लगता है कि यह पूरी तरह से न्यूनतम नहीं है, हालांकि।

कुछ अवसरों पर जब मुझे एक सहयोगी को 'यूनिकोड' समझाया गया था, तो यह अमूर्त यूनिकोड कोडपॉइंट्स की धारणा है जो रोशनी के लिए महत्वपूर्ण है। (ज्यादा agonizing और बातचीत के साथ)

  • यूनिकोड कंसोर्टियम है उपयोग में पात्रों के एक बड़े अंश के लिए एक नंबर देने में कामयाब रहे: मेरे सफल स्पष्टीकरण की संरचना कुछ इस तरह किया गया है। ये संख्याएं हैं (शब्दकोष) जिन्हें 'कोडपॉइंट्स' कहा जाता है।

  • 'पत्र ए' में एक कोडपॉइंट है, और यह फोंट से स्वतंत्र है। इस प्रकार 'ए' और 'ए' के ​​पास अलग-अलग कोडपॉइंट होते हैं, लेकिन रोमन, बोल्ड, इटैलिक, सेरिफ़, सैन्स सेरिफ़ (एट बहुत ज्यादा कैटेरा) विशिष्ट नहीं हैं। जापानी कांजी, तेंगवार और क्लिंगन पात्र (उदाहरण के लिए) कोडपॉइंट्स हैं (यह ध्यान देता है)।

  • ए 'यूनिकोड स्ट्रिंग' (अवधारणात्मक रूप से) कोडपॉइंट्स का अनुक्रम है। यह गणितीय पूर्णांक का अनुक्रम है। यह पूछने में कोई मतलब नहीं है कि ये बाइट्स, 2-बाइट या 4-बाइट शब्द हैं; अनुक्रम में कंप्यूटर के साथ कुछ लेना देना नहीं है।

  • यदि, हालांकि, आप किसी को पूर्णांक के अनुक्रम को भेजना चाहते हैं, या इसे कंप्यूटर डिस्क पर सहेजना चाहते हैं, तो आपको इसे एन्कोड करने के लिए कुछ करना होगा। आप पेपर के टुकड़े पर संख्याओं का अनुक्रम भी लिख सकते हैं, लेकिन इस बिंदु पर कंप्यूटर के लिए विशेषज्ञ बनें। यदि आप इसे कंप्यूटर पर स्टोर या भेजना चाहते हैं, तो आपको इन पूर्णांक को बाइट्स के अनुक्रम में बदलना होगा। ऐसा करने के लिए कई प्रक्रियाएं हैं, और इन प्रक्रियाओं में से प्रत्येक को 'एन्कोडिंग' नाम दिया गया है। इन 'एन्कोडिंग' में से एक यूटीएफ -8 है।

  • जब आप 'यूनिकोड फ़ाइल पढ़ते हैं', तो आप डिस्क पर बाइट्स के अनुक्रम के साथ शुरू कर रहे हैं, और संकल्पनात्मक रूप से पूर्णांक के अनुक्रम के साथ समाप्त हो रहे हैं। यदि 'यूनिकोड फ़ाइल' इंगित किया गया है, तो किसी भी तरह, यूटीएफ -8 में एन्कोड किया जाना है, तो आपको RFC 3629 में परिभाषित एल्गोरिदम का उपयोग करके पूर्णांक के अनुक्रम प्राप्त करने के लिए बाइट्स के अनुक्रम को डीकोड करना होगा। 'यूनिकोड स्ट्रिंग' पर आने वाले सभी कार्यों को कोडपॉइंट्स के अनुक्रम के संदर्भ में परिभाषित किया गया है, और यह तथ्य कि डिस्क पर, डिस्क पर, 'यूटीएफ -8' भूल गया है।

+0

सुधार: तेंगवार और क्लिंगन में वर्तमान में उनके लिए आवंटित यूनिकोड कोडपॉइंट नहीं हैं। दोनों को वास्तव में कई बार प्रस्तावित किया गया है, लेकिन अपेक्षित समिति के नारे की आपूर्ति के लिए न तो प्रस्ताव के पास राष्ट्रीय मानक निकाय या उद्योग खिलाड़ी है। –

संबंधित मुद्दे