2012-01-04 14 views
6

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

के अनुसार

: http://www.utf8-chartable.de/ और http://www.fileformat.info/info/unicode/char/b0/index.htm

यूनिकोड B0 है, लेकिन UTF-8 सी 2 B0 है कैसे आ ??

+0

हजारों पात्र हैं जिनका प्रतिनिधित्व यूटीएफ -8 और यूटीएफ -16 के बीच अलग है। आपको क्या विश्वास है कि डिग्री प्रतीक विशेष उपचार के हकदार है? –

+5

आपको यूनिकोड और इसके विभिन्न एन्कोडिंग के बीच अंतर को समझने की आवश्यकता है। लोगों द्वारा पोस्ट किए गए लिंक पढ़ें। – tripleee

+0

@ माइकनाकिस: मेरा मानना ​​है कि * सभी * यूनिकोड कोड बिंदुओं में यूटीएफ -8 और यूटीएफ -16 में अलग-अलग प्रतिनिधित्व हैं। –

उत्तर

15

UTF-8 बाइट की चर संख्या (बाइट की संख्या कोड बिंदु पर निर्भर करता है) का उपयोग कर UTF वर्ण एन्कोड करने के लिए एक तरीका है।

110xxxxx 10xxxxxx 

जहां x कोड बिंदु के बिट्स का प्रतिनिधित्व एन्कोड किया जा रहा: U + 0080 और U + 07FF के बीच

कोड अंक निम्नलिखित 2-बाइट encoding का उपयोग करें।

चलो यू + 00 बी 0 पर विचार करें। एक ऊपर टेम्पलेट में बिट्स विकल्प हैं द्विआधारी में, 0xB0 10110000. है, एक हो जाता है:

11000010 10110000 

हेक्स में, इस 0xC2 0xB0 है।

+1

और, महत्वपूर्ण बात यह है कि यह एक ही यूनिकोड कोड बिंदु, यू +00 बी 0 का एक अलग प्रतिनिधित्व है। यूटीएफ -16 0x00 0xB0 (बड़े-एंडियन) या 0xB0 0x00 (छोटे-अंत) का उपयोग करता है, लेकिन यूटीएफ -8 0xC2 0xB0 (कोई एंडियन-नेस नहीं) का उपयोग करता है। –

+0

आपके द्वारा प्रदान किया गया लिंक बहुत उपयोगी है ... धन्यवाद –

+0

@ जोनाथन लेफ्लर "कोई एंडियन-नेस" उचित शब्दावली नहीं है लेकिन मजेदार –

4

यूनिकोड (UTF-16 और UTF-32) उस चरित्र के लिए कोड बिंदु 0x00B0 उपयोग करता है। यूटीएफ -8 127 (0x007F) से ऊपर के मूल्यों पर वर्णों की अनुमति नहीं देता है, क्योंकि प्रत्येक बाइट का उच्च बिट यह इंगित करने के लिए आरक्षित है कि यह विशेष चरित्र वास्तव में एक बहु-बाइट है।

बेसिक 7-बिट ASCII UTF-8 के पहले 128 वर्णों के लिए सीधे मैप करता है। कोई भी वर्ण जिनके मान 127 दशमलव (7 एफ हेक्स) से ऊपर हैं, उच्च बिट सेट करके और बचने के लिए 1 या अधिक अतिरिक्त बाइट जोड़कर "बच निकला" होना चाहिए।

4

UTF-8 यूनिकोड में से एक एन्कोडिंग है। यूटीएफ -16 और यूटीएफ -32 यूनिकोड के अन्य एन्कोडिंग हैं।

यूनिकोड हर किरदार के लिए एक अंकीय मान परिभाषित करता है; डिग्री प्रतीक 0xB0, या 176 दशमलव में होता है। यूनिकोड परिभाषित नहीं करता है कि उन संख्यात्मक मानों का प्रतिनिधित्व कैसे किया जाता है।

यूटीएफ -8 मूल्य 0xB0 मूल्य 0xC2 0xB0 के साथ लगातार दो ऑक्टेट्स (बाइट्स) के रूप में एन्कोड करता है।

यूटीएफ -16 समानता के आधार पर 0x00 0xB0 या 0xBo 0x00 के समान मूल्य को एन्कोड करता है।

यूटीएफ -32 इसे 0x00 0x00 0x00 0xB0 या 0xB0 0x00 0x00 0x00 के रूप में एन्कोड करता है, फिर अंतहीनता के आधार पर (मुझे लगता है कि अन्य ऑर्डर संभव हैं)।

1

एनपीई, मार्क और कीथ के उत्तर इस विषय पर मेरे ज्ञान से ऊपर और ऊपर हैं। इससे पहले कि मुझे एहसास हुआ कि यह क्या था, फिर भी मुझे उन्हें दो बार पढ़ना पड़ा। तब मैंने यह वेब पेज देखा जिसने इसे मेरे लिए "क्लिक" किया।

http://www.utf8-chartable.de/ पर, आप निम्न देख सकते हैं:

UTF-8 needs C2 80 to represent U+0080

सूचना कैसे यह आवश्यक है दो बाइट्स का उपयोग करने के एक चरित्र कोड करने के लिए। अब एनपीई से स्वीकृत उत्तर पढ़ें।

+0

यदि कोई उपयोगकर्ता वेबसाइट नहीं देख सकता है, तो यह यूटीएफ -8 के रूप में '0x7F' (DELETE) दिखाता है: '7 एफ', और' 0x80' यूटीएफ -8 के रूप में: 'सी 2 80' –

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