आगे संदर्भ के बिना
, मैं कहूंगा कि UTF-8 में एक चरित्र के लिए बाइट्स की अधिकतम संख्या
जवाब है कि: 6 बाइट्स
स्वीकार किए जाते हैं जवाब के लेखक सही ढंग से यह पता के रूप में कहा कि " मूल विनिर्देश ", लेकिन मुझे लगता है कि यह पाठक को गुमराह करता है, क्योंकि जहां तक मुझे पता है, यह अभी भी वर्तमान और सही विनिर्देश है, प्रति wikipedia, और a Google book on UTF-8 in Java प्रति।
आरएफसी स्वीकार किए जाते हैं जवाब कहा गया है कि केवल चार बाइट्स एक UTF-16 एन्कोडिंग के लिए प्रासंगिक हैं में संदर्भित है, तो यह सही है कि हम संदर्भ
जवाब केवल तभी जब यदि UTF-16 से केवल अक्षर का अनुवाद UTF- को 8: 4 बाइट्स
अब, क्या वे सभी पात्र हैं जिन्हें यूटीएफ -16 द्वारा समर्थित किया जा सकता है? wikipedia again के अनुसार, यूनिकोड x10FFFF कोड बिंदुओं का प्रतिनिधित्व कर सकता है। तो, 0 सहित, इसका मतलब है कि हम इन बाइट्स के साथ ऐसा कर सकते हैं: एफ एफएफ एफएफ, यानी ढाई बाइट, या 20 बिट्स। यूटीएफ -8 स्पेक पर वापस देखकर, हम देखते हैं कि हम चार यूटीएफ -8-एन्कोडेड बाइट्स के साथ 20 बिट्स का प्रतिनिधित्व कर सकते हैं। तो
जवाब सभी यूनिकोड को कवर करता है, तो: Java <= v7 में, 4 बाइट
लेकिन, वे UTF-8 के साथ यूनिकोड का प्रतिनिधित्व करने के लिए एक 3-बाइट अधिकतम के बारे में बात? ऐसा इसलिए है क्योंकि मूल यूनिकोड विनिर्देश ने केवल मूल बहुभाषी विमान (BMP) को परिभाषित किया है, यानी यह यूनिकोड का पुराना संस्करण है, या आधुनिक यूनिकोड का सबसेट है। तो
जवाब केवल मूल यूनिकोड, बीएमपी का प्रतिनिधित्व करता है, तो: 3 बाइट्स
लेकिन, दूसरी तरह के जाने के बारे में ओपी बात करती है। वर्णों से यूटीएफ -8 बाइट्स तक नहीं, लेकिन यूटीएफ -8 बाइट्स से बाइट्स प्रतिनिधित्व के "स्ट्रिंग" तक। शायद स्वीकार्य उत्तर के लेखक ने सवाल के संदर्भ से पाया, लेकिन यह जरूरी नहीं है, इसलिए इस प्रश्न के आकस्मिक पाठक को भ्रमित कर सकते हैं।
यूटीएफ -8 से देशी एन्कोडिंग में जाकर, हमें यह देखना होगा कि "स्ट्रिंग" कैसे कार्यान्वित किया जाता है। पाइथन> = 3 जैसी कुछ भाषाएं प्रत्येक वर्ण को पूर्णांक कोड बिंदुओं के साथ प्रस्तुत करती हैं, जो कि कुछ कचरे के साथ यूनिकोड की आवश्यकता वाले 20 को कवर करने के लिए प्रति वर्ण 4 बाइट्स की अनुमति देती है। बिल्कुल 20 बिट क्यों नहीं? क्योंकि चीजें तेजी से होती हैं जब वे बाइट-गठबंधन होते हैं। पाइथन < = 2 और Java जैसी कुछ भाषाएं यूटीएफ -16 एन्कोडिंग का उपयोग करके वर्णों का प्रतिनिधित्व करती हैं, जिसका अर्थ है कि उन्हें विस्तारित यूनिकोड (बीएमपी नहीं) का प्रतिनिधित्व करने के लिए सरोगेट जोड़े का उपयोग करना होगा। किसी भी तरह से अभी भी 4 बाइट अधिकतम है। यदि
जवाब UTF-8 के लिए जा रहा -> देशी एन्कोडिंग: 4 बाइट्स
तो, अंतिम निष्कर्ष, 4 सबसे आम सही जवाब है, इसलिए हम इसे अधिकार मिल गया। लेकिन, कुछ संदर्भों में आपको सावधान रहना चाहिए। उदाहरण के लिए, उम्मीद न करें कि आप जो कुछ भी यूटीएफ -8 स्ट्रीम से अधिकतम 4 बाइट में पढ़ते हैं उसका प्रतिनिधित्व कर सकते हैं। यदि यह यूनिकोड नहीं है, तो आपको 6 बाइट्स की आवश्यकता हो सकती है।
आपने * विकिपीडिया के यूटीएफ -8 आलेख] (http://en.wikipedia.org/wiki/UTF-8) जैसे सामान्य संसाधनों को देखा, पहले ... सही? –
मैंने कई लेख पढ़े जो मिश्रित उत्तरों दिए ... मुझे वास्तव में इंप्रेशन मिला कि उत्तर 3 था इसलिए मुझे बहुत खुशी है कि मैंने – Edd
से पूछा कि मैं यहां एक यूट्यूब लिंक छोड़ दूंगा, जिसमें टॉम स्कॉट के पात्र, प्रतीक, यूनिकोड चमत्कार शामिल हैं: https: //goo.gl/sUr1Hf। आप सुनते हैं और देखते हैं कि ASCII वर्ण एन्कोडिंग से utf-8 तक सबकुछ कैसे विकसित किया जा रहा है। – Roylee