2009-11-19 5 views
8

पर एक स्ट्रिंग एन्कोडिंग मेरे पास एक लंबी स्ट्रिंग है जिसे मैं एसीआईआई में एन्कोड करना चाहता हूं। मैं कर रहा हूँ:एसीआई

s = s.encode('ascii', 'replace') 

लेकिन मैं मिलता है:

'ascii' codec can't decode byte 0xc3 in position 2646: ordinal not in range(128) 

(मैं भी 'ignore' की कोशिश की है, लेकिन यह मदद नहीं करता है।)

क्या मैं गलत कर रहा हूँ?

उत्तर

10

आपकी स्ट्रिंग पहले से ही कुछ एन्कोडिंग के साथ एन्कोड किया गया है। इसे एसीआईआई में एन्कोड करने से पहले, आप को पहले को डीकोड करना होगा।

अजगर implicity यह डिकोड करने के लिए कोशिश कर रहा है (यही कारण है कि आप एक UnicodeDecodeErrorUnicodeEncodeError नहीं मिल है)।

आप ascii को यह reencode करने के लिए प्रयास करने से पहले स्पष्ट रूप से अपने bytestring (उचित एन्कोडिंग का प्रयोग करके) डिकोडिंग द्वारा समस्या का समाधान कर सकते हैं।

उदाहरण:

s = s.decode('some_encoding').encode('ascii', 'replace') 

का प्रयोग सही अपने स्ट्रिंग एन्कोडिंग 'some_encoding' के बजाय, पहली जगह में इनकोडिंग था।

आपको यह पता होना चाहिए कि एक स्ट्रिंग एन्कोडिंग का उपयोग करने से पहले आप इसे डीकोड कर सकते हैं। आपको स्ट्रिंग कहां से मिली?

1

encodeunicode ऑब्जेक्ट्स पर इसे str में परिवर्तित करने के लिए उपयोग किया जाना चाहिए। यदि आपके पास स्ट्र ऑब्जेक्ट है, तो आपको इसे decode का उपयोग unicode में परिवर्तित करने के लिए करना चाहिए।

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

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