पायथन 2.7:
में [2]: utf8_str = '\ xf0 \ x 9f [3]: प्रिंट [/ 3]: प्रिंट (यूटीएफ 8_स्ट्रैक) 👍 में [4]: यूनिकोड_स्ट्रिक = utf8_str.decode ('utf-8') में [5]: प्रिंट (यूनिकोड_स्ट्रैथ) 👍 में [6]: यूनिकोड_स्ट्र आउट [ 6]: यू '\ U0001f44d' में [7]: लेन (यूनिकोड_स्ट्रैक) आउट [7]: 2
चूंकि unicode_str
केवल एक यूनिकोड कोड बिंदु (0x0001f44d), len (unicode_str)
1 के बजाय 2 क्यों करता है?
इसका अर्थ है ऐसी कोडपॉइंट्स को 2 अक्षरों के रूप में दिखाया जाता है जब लंबाई की मांग करते हैं।
आपको अपने पायथन बायनरी को फिर से कंपैले करना होगा, यदि यह मामला ( ./ कॉन्फ़िगर करें --अन्य-यूनिकोड = Ucs4
इसे सक्षम करेगा), या पायथन 3.3 या नए में नवीनीकृत करें, जहां पर यू एक चर-चौड़ाई वाला यूनिकोड प्रकार जो कि एएससीआईआई, यूसीएस -2 और यूसीएस -4 के बीच स्विच करता है जैसे कि निहित कोडपॉइंट्स के लिए आवश्यक है।
पायथन संस्करण 2.7 और 3.0 - 3.2 पर, आप यह पता लगा सकते हैं कि आप किस तरह का निर्माण करेंगे निरीक्षण करना; यह एक विस्तृत यूसीएस -4 निर्माण के लिए एक संकीर्ण यूसीएस -2 निर्माण, 1114111 == 0x10FFFF
के लिए 2 ^ 16-1 == 65535 == 0xFFFF
होगा। पायथन 3.3 और ऊपर में इसे हमेशा 1114111 पर सेट किया जाता है।
डेमो:
# संकीर्ण बिल्ड $ bin / python -c 'आयात सिस्टम; प्रिंट sys.maxunicode, len (u "\ U0001f44d"), सूची (यू "\ U0001f44d") '65535 2 [u' \ ud83d ', u' \ udc4d] # वाईड बिल्ड $ अजगर -सी 'आयात सिस्टम; प्रिंट sys.maxunicode, len (u "\ U0001f44d"), सूची (यू "\ U0001f44d") '1114111 1 [u' \ U0001f44d]]
No comments:
Post a Comment