दिलचस्प पोस्ट
एंड्रॉइड: स्केल आउटपुट फ़ाइल में एक बड़ी बिटमैप फ़ाइल का आकार बदलें मैं PHP में कैसे एक UTF-8 सीएसवी आउटपुट कर सकता हूं जो Excel ठीक से पढ़ा जाएगा? मैवेन प्रोजेक्ट को मौजूदा ग्रहण परियोजना में कन्वर्ट अगर मैं सीएसएस फ़ाइल को <head> या <body> में डाल देता हूं तो क्या अंतर है? तिथि सीमा के आधार पर लॉग फ़ाइल प्रविष्टियां फ़िल्टर करें जावास्क्रिप्ट से ईमेल कैसे भेजना है कॉमनजेएस, एएमडी और आवश्यकताओंजेएस के बीच संबंध? एनजी-एप और डेटा-एनजी-एप के बीच अंतर क्या है? एनिमेशन के बिना स्विचन गतिविधियों Express.js पर HTTPS को सक्षम करना एंड्रॉइड एमुलेटर पर Google मानचित्र v2 चलाना सी में एक variadic फ़ंक्शन का आवेश अग्रेषित करें फ़ायरवॉल के पीछे HTTPS पर GitHub तक पहुंचने का प्रयास करते हुए SSL प्रमाणपत्र अस्वीकार कर दिया गया स्ट्रिंग कॉन्सटेंट पूल क्लास में 'स्टैटिक' कीवर्ड क्या करता है?

सांकेतिक शब्दों में बदलना / व्याख्यान के बीच अंतर क्या है?

मुझे कभी नहीं यकीन है कि मैं str / यूनिकोड डीकोड और सांकेतिक शब्दों में बदलना के बीच के अंतर को समझता हूं।

मुझे पता है कि str().decode() के लिए है जब आपके पास बाइट्स की एक स्ट्रिंग होती है जिसे आपको पता है कि एक निश्चित कैरेक्टर एन्कोडिंग है, यह देखते हुए कि एन्कोडिंग नाम यह यूनिकोड स्ट्रिंग वापस करेगा।

मुझे पता है कि unicode().encode() एक दिए गए एन्कोडिंग नाम के अनुसार यूनिकोड वर्ण को बाइट्स की एक स्ट्रिंग में कनवर्ट करता है।

लेकिन मुझे नहीं पता कि str().encode() और unicode().decode() लिए हैं। क्या कोई भी समझा सकता है, और संभवत: कुछ भी सही कर सकता हूँ जिसे मैंने ऊपर गलत पाया है?

संपादित करें:

कई जवाब स्ट्रिंग पर क्या है। .encode पर जानकारी देते हैं, लेकिन कोई भी नहीं जानता कि क्या। .decode यूनिकोड के लिए है

वेब के समाधान से एकत्रित समाधान "सांकेतिक शब्दों में बदलना / व्याख्यान के बीच अंतर क्या है?"

यूनिकोड स्ट्रिंग्स की decode पद्धति में वास्तव में कोई भी अनुप्रयोग नहीं है (जब तक आपके पास यूनिकोड स्ट्रिंग में कुछ कारण के लिए कुछ गैर-टेक्स्ट डेटा है – नीचे देखें)। यह मुख्य रूप से ऐतिहासिक कारणों के लिए है, मुझे लगता है। पायथन 3 में यह पूरी तरह से चला गया है।

unicode().decode() डिफ़ॉल्ट (एएससीआई) कोडेक का उपयोग करते हुए s अन्तर्निहित एन्कोडिंग प्रदर्शन करेंगे। इसे इस तरह सत्यापित करें:

 >>> s = u'ö' >>> s.decode() Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0: ordinal not in range(128) >>> s.encode('ascii') Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0: ordinal not in range(128) 

त्रुटि संदेश बिल्कुल समान हैं

str().encode() यह दूसरा तरीका है – यह डिफ़ॉल्ट एन्कोडिंग के साथ s एक निहित डीकोडिंग का प्रयास करता है:

 >>> s = 'ö' >>> s.decode('utf-8') u'\xf6' >>> s.encode() Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128) 

इस तरह प्रयोग किया जाता है, str().encode() भी ज़रूरत से ज़्यादा ज़रूरत नहीं है

लेकिन उत्तरार्द्ध विधि का एक अन्य अनुप्रयोग है जो उपयोगी है: एन्कोडिंग हैं जो कि चरित्र सेटों के साथ कुछ नहीं करना है, और इस प्रकार 8-बिट तारों को एक सार्थक तरीके से लागू किया जा सकता है:

 >>> s.encode('zip') 'x\x9c;\xbc\r\x00\x02>\x01z' 

आप सही हैं, हालांकि: इन दोनों अनुप्रयोगों के लिए "एन्कोडिंग" का अस्पष्ट उपयोग है … अजीब फिर, पायथन 3 में अलग byte और string प्रकार के साथ, यह अब एक समस्या नहीं है।

यूनिकोड स्ट्रिंग को बाइट्स की एक स्ट्रिंग के रूप में दर्शाने के लिए एन्कोडिंग के रूप में जाना जाता है। u'...'.encode(encoding) उपयोग करें u'...'.encode(encoding)

उदाहरण:

     >>> यू'अोर '। एन्कोड (' यूटीएफ 8 ')
     '\ Xc3 \ x83 \ xC2 \ xa6 \ xc3 \ x83 \ xC2 \ xb8 \ xc3 \ x83 \ xC2 \ xa5'
     >>> यू'अोर '। एन्कोड (' latin1 ')
     '\ Xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5'
     >>> यू'अोर '। एन्कोड (' एएससीआई ')
     यूनिकोडएनकोड त्रुटि: 'एएससीआई' कोडेक 0-5 स्थिति में वर्णों को एन्कोड नहीं कर सकता है: 
     क्रमिक संख्या में नहीं (128)

जब आप इसे IO के लिए उपयोग करने की आवश्यकता होती है, तो आमतौर पर एक यूनिकोड स्ट्रिंग सांकेतिक शब्दों में बदलना, उदाहरण के लिए नेटवर्क पर इसे स्थानांतरित करें, या इसे डिस्क फ़ाइल में सहेजें।

यूनिकोड स्ट्रिंग में बाइट्स की स्ट्रिंग कन्वर्ट करने के लिए डीकोडिंग के रूप में जाना जाता है। unicode('...', encoding) या '…' का प्रयोग करें। डीकोड (एन्कोडिंग)

उदाहरण:

    >>> यू'अरो '
    यू '\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5' # इंटरप्रेटर यूनिकोड ऑब्जेक्ट की तरह प्रिंट करता है
    >>> यूनिकोड ('\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5', 'latin1')
    यू '\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5'
    >>> '\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5'.decode (' latin1 ')
    यू '\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5'

जब भी आप नेटवर्क से या डिस्क फ़ाइल से स्ट्रिंग डेटा प्राप्त करते हैं, तब आप आमतौर पर बाइट्स की स्ट्रिंग डीकोड करते हैं।

मेरा मानना ​​है कि अजगर 3 में यूनिकोड हैंडलिंग में कुछ बदलाव हैं, इसलिए उपरोक्त शायद अजगर 3 के लिए सही नहीं है I

कुछ अच्छे लिंक:

  • पूर्ण न्यूनतम सॉफ्टवेयर डेवलपर बिल्कुल, सकारात्मक रूप से यूनिकोड और कैरेक्टर समूह के बारे में पता होना चाहिए (कोई बहाना नहीं!)
  • यूनिकोड होव्सो

mybytestring.encode (somecodec) कुछ codec के इन मूल्यों के लिए सार्थक है:

  • बेस 64
  • BZ2
  • zlib
  • हेक्स
  • quopri
  • ROT13
  • string_escape
  • तुम तुम

मुझे यकीन नहीं है कि पहले से डिकोड किए गए यूनिकोड पाठ को किस डीकोड करना अच्छा है। कोशिश कर रहा है कि किसी भी एन्कोडिंग के साथ हमेशा सिस्टम की डिफ़ॉल्ट एन्कोडिंग के साथ पहले सांकेतिक शब्दों में बदलना करने का प्रयास करता है

anUnicode। सांकेतिक शब्दों में बदलना ('एन्कोडिंग') एक स्ट्रिंग ऑब्जेक्ट में परिणाम और यूनिकोड ऑब्जेक्ट पर कॉल किया जा सकता है

एक स्ट्रिंग। डीकोड ('एन्कोडिंग') एक यूनिकोड ऑब्जेक्ट में परिणाम और दिए गए एनकोडिंग में एन्कोडेड स्ट्रिंग पर कॉल किया जा सकता है।


कुछ और स्पष्टीकरण:

आप कुछ यूनिकोड वस्तु बना सकते हैं, जिसमें कोई एन्कोडिंग सेट नहीं है। जिस तरह से इसे अजगर द्वारा स्मृति में संग्रहीत किया जाता है, वह आपकी कोई चिंता नहीं है आप इसे खोज सकते हैं, इसे विभाजित कर सकते हैं और किसी स्ट्रिंग को जोड़ते हुए फ़ंक्शन को आप कॉल कर सकते हैं।

लेकिन एक समय आता है, जब आप अपने यूनिकोड ऑब्जेक्ट को कंसोल या कुछ टेक्स्ट फाइल में प्रिंट करना चाहते हैं। तो आपको इसे एनकोड करना होगा (उदाहरण के लिए – UTF-8 में), आप एन्कोड ('यूटीएफ -8') को कॉल करते हैं और आप '\ u / someNumber>' के अंदर एक स्ट्रिंग प्राप्त करते हैं, जो बिल्कुल प्रिंट करने योग्य है।

फिर, फिर से – आप विपरीत करना चाहते हैं – यूटीएफ -8 में एन्कोडेड स्ट्रिंग पढ़िए और इसे यूनिकोड के रूप में मान लें, इसलिए \ u360 एक अक्षर होगा, न कि 5। फिर आप एक स्ट्रिंग (चयनित एन्कोडिंग के साथ) को डीकोड करेंगे और यूनिकोड प्रकार के ब्रांड नए ऑब्जेक्ट प्राप्त करें

बस एक साइड नोट के रूप में – आप कुछ बिगाड़ने वाली एन्कोडिंग का चयन कर सकते हैं, जैसे 'ज़िप', 'बेस 64', 'सड़ांध' और उनमें से कुछ स्ट्रिंग से स्ट्रिंग में कनवर्ट हो जाएंगे, लेकिन मेरा मानना ​​है कि सबसे आम बात यह है कि इसमें यूटीएफ -8 / यूटीएफ -16 और स्ट्रिंग

आपको पायथन यूनिकोडडेकोडएर्रर को पढ़ना चाहिए- मैं गैरसमझाना एन्कोड हूँ स्वीकार्य जवाब पढ़ने के बाद पायथन में यूनिकोड की मेरी समझ बहुत स्पष्ट थी।

कुछ ऐसे एन्कोडिंग हैं जिनका इस्तेमाल डीआर / एन्कोड से str से str या यूनिकोड से यूनिकोड तक करने के लिए किया जा सकता है। उदाहरण के लिए बेस 64, हेक्स या यहां तक ​​कि रोट 13 भी। वे कोडेक मॉड्यूल में सूचीबद्ध हैं।

संपादित करें:

यूनिकोड स्ट्रिंग पर डीकोड संदेश संबंधित सांकेतिक शब्दों में बदलना कार्रवाई को पूर्ववत कर सकता है:

 In [1]: u'0a'.decode('hex') Out[1]: '\n' 

यूनिकोड के बजाय लौटा दिया गया प्रकार str है जो मेरी राय में दुर्भाग्यपूर्ण है। लेकिन जब आप str और यूनिकोड के बीच एक उचित एन / डिकोड नहीं कर रहे हैं तो यह किसी भी तरह से गड़बड़ की तरह दिखता है।