2009-06-13 11 views
23

में यूनिकोड वर्णों में परिवर्तित कैसे करें जब मैंने "यूनिकोड (head.contents [3])" का उपयोग करके टैग की सामग्री प्राप्त करने का प्रयास किया, तो मुझे आउटपुट मिलता है: "क्रिस्टेनसेन स्क \ xf6ld "। मैं भागने अनुक्रम स्ट्रिंग के रूप में वापस किया जाना चाहता हूँ। पायथन में इसे कैसे करें?यूनिकोड एस्केप अनुक्रमों को एक पाइथन स्ट्रिंग

उत्तर

28

मान लिया जाये कि अजगर एक सामान्य स्ट्रिंग के रूप में नाम देखता है, तो आपको पहले यूनिकोड को यह डिकोड करने के लिए होगा:

>>> name 
'Christensen Sk\xf6ld' 
>>> unicode(name, 'latin-1') 
u'Christensen Sk\xf6ld' 

इस को प्राप्त करने का एक और तरीका है:

>>> name.decode('latin-1') 
u'Christensen Sk\xf6ld' 
निम्न उदाहरण देखें

स्ट्रिंग के सामने "यू" पर ध्यान दें, यह संकेत है कि यह अनकोड है। आप इस मुद्रित करते हैं, तो उच्चारण पत्र ठीक से दिखाया गया है:

>>> print name.decode('latin-1') 
Christensen Sköld 

Btw: जब आवश्यक हो, आप जैसे में यूनिकोड चालू करने के लिए डी "एनकोड" विधि का उपयोग कर सकते हैं एक UTF-8 स्ट्रिंग:

>>> name.decode('latin-1').encode('utf-8') 
'Christensen Sk\xc3\xb6ld' 
+0

बहुत दोस्त धन्यवाद। तो अगर मुझे इसे डेटाबेस में सहेजने की ज़रूरत है तो मैं इसे डीकोड कर सकता हूं और डेटाबेस में सहेज सकता हूं, है ना? – Vicky

+1

नहीं, मार्क का उदाहरण फिर से पढ़ें। यूनिकोड में जो कुछ भी है (लैटिन 1, सीपी 1252, आदि) से डेटा को डीकोड करने के बाद, आपको अपने यूनिकोड स्ट्रिंग को एन्कोडिंग के साथ एन्कोड करने की आवश्यकता है (1) आपका डेटाबेस समर्थन करता है और (2) सभी यूनिकोड वर्णों को संरक्षित करता है ... आमतौर पर यूटीएफ -8 । –

8

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

>>> u'\xcfa' 
u'\xcfa' 
>>> print u'\xcfa' 
Ïa 
+0

यदि समस्या टर्मिनल के साथ है, तो क्या यह इसे डेटाबेस (MySQL) में सहेजने पर ठीक से प्रदर्शित किया जाएगा ?? – Vicky

+0

हां, यह होगा, लेकिन आपको अपने डीबी के संयोजन/चरित्र-सेट एन्कोडिंग का ख्याल रखना होगा। – securecurve

6

यूनिकोड के साथ एक बाइट स्ट्रिंग को देखते हुए निकल जाता b"\N{SNOWMAN}", b"\N{SNOWMAN}".decode('unicode-escape) उम्मीद यूनिकोड स्ट्रिंग u'\u2603' का उत्पादन करेगा।

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